为了账号安全,请及时绑定邮箱和手机立即绑定

递归重写JSON树的函数,将1项的任何数组转换为对象

递归重写JSON树的函数,将1项的任何数组转换为对象

尚方宝剑之说 2022-09-16 20:50:23
有点奇怪的请求,但我需要一些帮助来编写一个函数,该函数将转换一些看起来像这样的JSON(非常人为的示例抱歉):{  "userDetails": [    {      "name": "DOM",      "age": 30,      "comments": [        {          "text": "Text"        },        {          "text": "HELLO",          "stuff": [            {              "name": "DOM"            }          ]        }      ]    }  ],  "items": [    {      "name": "A"    },    {      "name": "B"    }  ]}我想要:{  "userDetails": {    "name": "DOM",    "age": 30,    "comments": [      {        "text": "Text"      },      {        "text": "HELLO",        "stuff": {          "name": "DOM"        }      }    ]  }  "items": [    {      "name": "A"    },    {      "name": "B"    }  ]}因此,仅对具有 1 个元素的数组进行去害,仅此而已。希望使用洛达什褶皱的解决方案。
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

简单的树遍历和展开数组长度 1

注意:就地发生突变


data={

  "userDetails": [{

    "name": "DOM",

    "age": 30,

    "arr": [{"c":"c"}]

  }],

  "items": [

    {

      "name": [{"A": [[[["A"],["B"]]]]}]

    },

    {

      "name": "B"

    }

  ]

}


walk = (node,k) => {

    if(typeof node[k] === 'object')

    for(const key of Object.keys(node[k])) walk(node[k],key)

    if(Array.isArray(node[k]) && node[k].length === 1)

      node[k]=node[k][0]

}


walk({data},'data')


console.log(data)


查看完整回答
反对 回复 2022-09-16
  • 1 回答
  • 0 关注
  • 47 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信