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