【发布时间】:2017-11-16 03:42:00
【问题描述】:
我有一个动态深度的嵌套对象。我需要稍微改变它的结构。
例如我有一个这样的对象:
let root = {
data:{
id:"5df6608a-59f0-42ac-9c2e-fb2a53df9008",
name:"Product"
},
children:[
{
data:{
id:"b527b1f5-4fd5-4f11-b4f1-6deeb33473d8",
name:"productId"
},
children:[
{
data:{
id:"7045051e-b97e-4836-9048-e93d72c75751",
name:"rating"
},
children:[
{
data:{
id:"88025b92-4309-4864-9c40-d4effd33a38b",
name:"ratingId"
},
children:[
]
}
]
}
]
}
]
}
根对象包含一个名为 data 的对象和一个子数组,它们又具有与根对象相同的结构,我需要删除数据对象并将数据对象内部的 id 和 name 值移动到相同的位置级别为子数组,如下所示。
let root = {
id:"5df6608a-59f0-42ac-9c2e-fb2a53df9008",
name:"Product",
children:[
{
id:"b527b1f5-4fd5-4f11-b4f1-6deeb33473d8",
name:"productId",
children:[
{
id:"7045051e-b97e-4836-9048-e93d72c75751",
name:"rating",
children:[
{
id:"88025b92-4309-4864-9c40-d4effd33a38b",
name:"ratingId",
children:[
]
}
]
}
]
}
]
}
我如何使用 javascript 来做到这一点?
因此,我编写了一种方法,使用该方法我可以将对象遍历到两个级别的深度,但对象的深度是动态的。
下面是我用 reactjs 写的代码
formateTreeChlidren(treeData){
let rootObject = {
name: treeData.data.name,
id: treeData.data.id,
children: []
}
let tempArray= [];
treeData.children.map( child => {
let childrenArray = [];
if(child.children.length > 0){
child.children.map( subChild => {
let subChildObject= {
name: subChild.data.name,
id: subChild.data.id,
children:subChild.children
}
childrenArray.push(subChildObject);
});
}
let childObject= {
name: child.data.name,
id: child.data.id,
children:childrenArray
}
tempArray.push(childObject);
});
rootObject["children"] = tempArray;
}
【问题讨论】:
-
.. 通过编写 Javascript。到目前为止,您尝试过什么?您在哪里卡住了?
-
您可以发布一些您尝试过的代码吗?会帮助我们帮助你。谢谢。
标签: javascript reactjs object recursion