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

有点奇怪的请求,但我需要一些帮助来编写一个函数,该函数将转换一些看起来像这样的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 个元素的数组进行去害,仅此而已。希望使用洛达什褶皱的解决方案。


尚方宝剑之说
浏览 48回答 1
1回答

红颜莎娜

简单的树遍历和展开数组长度 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript