如何使用递归将一个对象转换为另一个对象。Javascript
我不认识路,所以我需要帮助。所以我有这个物体如何使用递归将一个对象转换为另一个对象。Javascript,javascript,arrays,frontend,javascript-objects,Javascript,Arrays,Frontend,Javascript Objects,我不认识路,所以我需要帮助。所以我有这个物体 { "label": "root", "children": [ { "label": "a", "value": "abc" }, { "label": "b", "value": 123 }, { "label": "c",
{
"label": "root",
"children": [
{
"label": "a",
"value": "abc"
},
{
"label": "b",
"value": 123
},
{
"label": "c",
"children": [
{
"label": 0,
"children": [
{
"label": "d",
"value": "def"
},
{
"label": "e",
"value": 1
},
{
"label": "f",
"children": [
{
"label": 0,
"children": [
{
"label": "g",
"value": "ghi"
},
{
"label": "h",
"value": 456
}
]
}
]
}
]
},
{
"label": 1,
"children": [
{
"label": "i",
"value": 1
},
{
"label": "j",
"value": "abc"
},
{
"label": "asd",
"children": [
{
"label": 0,
"children": [
{
"label": "qwe",
"value": "kuracpalac"
},
{
"label": "rtz",
"value": "asdasdasdasd"
}
]
}
]
}
]
}
]
}
]
}
,我需要它将其转换为如下所示的新对象:
const obj = {
a: "abc",
b: 123,
c: [
{
d: "def",
e: 1,
f: [
{
g: "ghi",
h: 456
}
]
},
{
i: 1,
j: "abc",
asd: {
qwe: "kuracpalac",
rtz: "asdasdasdasd"
}
}
]
};
谢谢你的帮助:) 您可以使用两个函数,一个用于获取数组,具体取决于键(如果是整数值或指定的对象)。另一个函数返回具有新键/值对的对象,该键/值对可以是值,也可以是子数组的嵌套对象结构
函数分配(数组){
返回Object.assign(数组[0]?[]:{},…数组中的0);
}
函数getObject({label,value,children}){
返回{[label]:值| |赋值(children.map(getObject))};
}
var数据={label:“root”,子项:[{label:“a”,值:“abc”},{label:“b”,值:123},{label:“c”,子项:[{label:0,子项:[{label:“d”,值:“def”},{label:“e”,值:1},{label:“f”,子项:[{label:0,子项:[{label:“g”,值:“ghi”},{label:“h”,值:456},{label:1,子项:[{label:“i”,值:1},{label:“j”,值:“abc”},{label:“asd”,子项:[{label:0,子项:[{label:“qwe”,值:“kuracpalac”},{label:“rtz”,值:“asdasdasd”}]},
结果=getObject(数据).root;
console.log(结果);
。作为控制台包装器{max height:100%!important;top:0;}
您应该始终尝试在问题中包含您尝试过的任何内容,以便人们可以帮助您朝正确的方向前进,或者查看您理解失败的地方。非常感谢!这很有帮助!