Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数递归重写JSON树,将任何包含1项的数组转换为对象_Javascript_Json - Fatal编程技术网

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

Javascript 函数递归重写JSON树,将任何包含1项的数组转换为对象,javascript,json,Javascript,Json,请求有点奇怪,但我需要一些帮助来编写一个函数,该函数将转换一些JSON,如下所示(非常做作的示例,抱歉): 我想要: { "userDetails": { "name": "DOM", "age": 30, "comments": [ { "text": "Text" }, { "text": "HELLO", "stuff": { "name": "DOM"

请求有点奇怪,但我需要一些帮助来编写一个函数,该函数将转换一些JSON,如下所示(非常做作的示例,抱歉):

我想要:

{
  "userDetails": {
    "name": "DOM",
    "age": 30,
    "comments": [
      {
        "text": "Text"
      },
      {
        "text": "HELLO",
        "stuff": {
          "name": "DOM"
        }
      }
    ]
  }
  "items": [
    {
      "name": "A"
    },
    {
      "name": "B"
    }
  ]
}

所以只有最密集的数组有1个元素,没有更多。希望使用lodash折叠解决方案。

简单的树行走和展开阵列长度1
注意:在适当的地方发生变异

数据={
“用户详细信息”:[{
“名称”:“DOM”,
“年龄”:30岁,
“arr”:[{“c”:“c”}]
}],
“项目”:[
{
“名称”:[{“A”:[[“A”],[“B”]]}]
},
{
“名称”:“B”
}
]
}
行走=(节点,k)=>{
if(节点的类型[k]=“对象”)
对于(对象的常量键。键(节点[k]))遍历(节点[k],键)
if(Array.isArray(node[k])&&node[k].length==1)
节点[k]=节点[k][0]
}
walk({data},'data')

console.log(data)
您询问的是一个递归函数,但是这里没有什么比
obj.userDetails=obj.userDetails[0]
更需要的了。你能提供一个实际代表问题的例子吗?好吧,想象一下这是一个更深层的嵌套结构,我需要一个适合我描述的规则的所有形状的通用解决方案。我将更新示例JSONRecursion,它是我的broda
{
  "userDetails": {
    "name": "DOM",
    "age": 30,
    "comments": [
      {
        "text": "Text"
      },
      {
        "text": "HELLO",
        "stuff": {
          "name": "DOM"
        }
      }
    ]
  }
  "items": [
    {
      "name": "A"
    },
    {
      "name": "B"
    }
  ]
}