【发布时间】:2018-02-15 07:32:46
【问题描述】:
需要在 javascript/jquery 中为下面的 json 对象提供递归函数。
“受影响”的关键是每个级别的叶节点。
“子”键可能有任意数量的级别,其中可能包含“受影响”节点。
我想将每个级别的叶子节点(“影响”)合并到同一级别的子节点(“孩子”)。
这意味着任何级别的子节点也应该影响同一级别的数据。
输入
{
"Data": [{
"id": 1745,
"name": "Top Parent",
"parentId": null,
"child": [{
"id": 1746,
"name": "Sub Parent- child to Top Parent",
"parentId": 1745,
"child": [{
"id": 1747,
"name": "child to Sub Parent--One ",
"parentId": 1746
},
{
"id": 1748,
"name": "child to Sub Parent--two",
"parentId": 1746,
"child": [{
"id": 1749,
"name": "Child to two",
"parentId": 1748
}],
"impacted": [{
"id": 2471,
"name": "Leaf of two ",
"network": true
}]
}
],
"impacted": [{
"id": 2470,
"name": "Leaf of Sub Parent-1 ",
"network": true
},
{
"id": 2469,
"name": "Leaf of Sub Parent-1",
"network": true
}
]
}],
"impacted": [{
"id": 2468,
"name": "Leaf Of Top Parent",
"network": true
}]
}]
}
预期输出
{
"Data": [{
"id": 1745,
"name": "Top Parent",
"parentId": null,
"child": [{
"id": 1746,
"name": "Sub Parent- child to Top Parent",
"parentId": 1745,
"child": [{
"id": 1747,
"name": "child to Sub Parent--One ",
"parentId": 1746
},
{
"id": 1748,
"name": "child to Sub Parent--two",
"parentId": 1746,
"child": [{
"id": 1749,
"name": "Child to two",
"parentId": 1748
},
{
"id": 2471,
"name": "Leaf of two ",
"network": true
}
]
},
{
"id": 2470,
"name": "Leaf of Sub Parent-1 ",
"network": true
},
{
"id": 2469,
"name": "Leaf of Sub Parent-1",
"network": true
}
]
},
{
"id": 2468,
"name": "Leaf Of Top Parent",
"network": true
}
]
}]
}
即使我们不从对象中删除“受影响的”键也是可以的。但是“受影响”的数据应该合并到同级别的“孩子”中。
我尝试了以下功能..但在每个级别都得到了重复
repeatLoop(data){
if(data && data.length){
for(var i=0;i<data.length;i++){
if(data[i].child && data[i].child.length && data[i].impacted && data[i].impacted.length){
for(var k=0; k<data[i].impacted.length;k++){
data[i].child.push(data[i].impacted[k])
this.repeatLoop(data[i].child)
}
}
}
}
return data
}
提前致谢
【问题讨论】:
-
你能在每行代码前面放四个空格并缩小你的示例数据吗?
标签: javascript jquery recursion array-merge