我需要通过以下对象数组循环循环以将所有内容重组为层次结构/树。我该如何实现?任何帮助都将不胜感激。
[
{
"id":1,
"parentId":null,
"value":"Root Parent 01",
"children":[]
},
{
"id":8,
"parentId":null,
"value":"Root Parent 02",
"children":[]
},
{
"id":36,
"parentId":15,
"value":"Child 01",
"children":[]
},
{
"id":43,
"parentId":15,
"value":"Child 02",
"children":[]
},
{
"id":50,
"parentId":15,
"value":"Child 03",
"children":[]
},
{
"id":15,
"parentId":null,
"value":"Root Parent 03",
"children":[]
},
{
"id":57,
"parentId":22,
"value":"Child 04",
"children":[]
},
{
"id":64,
"parentId":22,
"value":"Child 05",
"children":[]
},
{
"id":71,
"parentId":22,
"value":"Child 06",
"children":[]
},
{
"id":78,
"parentId":22,
"value":"Child 07",
"children":[]
},
{
"id":85,
"parentId":22,
"value":"Child 08",
"children":[]
},
{
"id":92,
"parentId":22,
"value":"Child 09",
"children":[]
},
{
"id":99,
"parentId":22,
"value":"Child 10",
"children":[]
},
{
"id":106,
"parentId":22,
"value":"Child 11",
"children":[]
},
{
"id":22,
"parentId":null,
"value":"Root Parent 04",
"children":[]
},
{
"id":113,
"parentId":29,
"value":"Child 12",
"children":[]
},
{
"id":115,
"parentId":29,
"value":"Child 13",
"children":[]
},
{
"id":122,
"parentId":29,
"value":"Child 14",
"children":[]
},
{
"id":129,
"parentId":29,
"value":"Child 15",
"children":[]
},
{
"id":136,
"parentId":29,
"value":"Child 16",
"children":[]
},
{
"id":143,
"parentId":29,
"value":"Child 17",
"children":[]
},
{
"id":157,
"parentId":150,
"value":"Child 18",
"children":[]
},
{
"id":150,
"parentId":29,
"value":"Child 19",
"children":[]
},
{
"id":29,
"parentId":null,
"value":"Root Parent 05",
"children":[]
}
]
所需的对象阵列:
[
{
"id":1,
"parentId":null,
"value":"Root Parent 01",
"children":[]
},
{
"id":8,
"parentId":null,
"value":"Root Parent 02",
"children":[]
},
{
"id":15,
"parentId":null,
"value":"Root Parent 03",
"children":[
{
"id":36,
"parentId":15,
"value":"Child 01",
"children":[]
},
{
"id":43,
"parentId":15,
"value":"Child 02",
"children":[]
},
{
"id":50,
"parentId":15,
"value":"Child 03",
"children":[]
}
]
},
{
"id":22,
"parentId":null,
"value":"Root Parent 04",
"children":[
{
"id":57,
"parentId":22,
"value":"Child 04",
"children":[]
},
{
"id":64,
"parentId":22,
"value":"Child 05",
"children":[]
},
{
"id":71,
"parentId":22,
"value":"Child 06",
"children":[]
},
{
"id":78,
"parentId":22,
"value":"Child 07",
"children":[]
},
{
"id":85,
"parentId":22,
"value":"Child 08",
"children":[]
},
{
"id":92,
"parentId":22,
"value":"Child 09",
"children":[]
},
{
"id":99,
"parentId":22,
"value":"Child 10",
"children":[]
},
{
"id":106,
"parentId":22,
"value":"Child 11",
"children":[]
}
]
},
{
"id":29,
"parentId":null,
"value":"Root Parent 05",
"children":[
{
"id":113,
"parentId":29,
"value":"Child 12",
"children":[]
},
{
"id":115,
"parentId":29,
"value":"Child 13",
"children":[]
},
{
"id":122,
"parentId":29,
"value":"Child 14",
"children":[]
},
{
"id":129,
"parentId":29,
"value":"Child 15",
"children":[]
},
{
"id":136,
"parentId":29,
"value":"Child 16",
"children":[]
},
{
"id":143,
"parentId":29,
"value":"Child 17",
"children":[]
},
{
"id":150,
"parentId":29,
"value":"Child 19",
"children":[
{
"id":157,
"parentId":150,
"value":"Child 18",
"children":[]
}
]
}
]
}
]
所需的树:
root parent 01
root父母02
root父母03
---孩子01
---孩子02
---孩子03
root父母04
---孩子04
---孩子05
---孩子06
---孩子07
---孩子08
---孩子09
---孩子10
---孩子11
root父母05
---孩子12
---孩子13
---孩子14
---孩子15
---孩子16
---孩子17
---孩子19
------儿童18
我是尝试自己尝试尝试的忠实拥护者。我一直想知道该怎么做,并认为这对我来说也是一个好机会。
首先,我对输入列表进行排序,寻找可以肯定的子元素而不是父母的项目。
然后,在第二个循环中,我们寻找孩子所属的父母,然后将它们与他们匹配。您可能必须根据数据来完善此过程。您可能还需要多次循环,但这应该给您足够的凹痕。
var inputArray = [{
"id": 1,
"parentId": null,
"value": "Root Parent 01",
"children": []
},
{
"id": 8,
"parentId": null,
"value": "Root Parent 02",
"children": []
},
{
"id": 36,
"parentId": 15,
"value": "Child 01",
"children": []
},
{
"id": 43,
"parentId": 15,
"value": "Child 02",
"children": []
},
{
"id": 50,
"parentId": 15,
"value": "Child 03",
"children": []
},
{
"id": 15,
"parentId": null,
"value": "Root Parent 03",
"children": []
},
{
"id": 57,
"parentId": 22,
"value": "Child 04",
"children": []
},
{
"id": 64,
"parentId": 22,
"value": "Child 05",
"children": []
},
{
"id": 71,
"parentId": 22,
"value": "Child 06",
"children": []
},
{
"id": 78,
"parentId": 22,
"value": "Child 07",
"children": []
},
{
"id": 85,
"parentId": 22,
"value": "Child 08",
"children": []
},
{
"id": 92,
"parentId": 22,
"value": "Child 09",
"children": []
},
{
"id": 99,
"parentId": 22,
"value": "Child 10",
"children": []
},
{
"id": 106,
"parentId": 22,
"value": "Child 11",
"children": []
},
{
"id": 22,
"parentId": null,
"value": "Root Parent 04",
"children": []
},
{
"id": 113,
"parentId": 29,
"value": "Child 12",
"children": []
},
{
"id": 115,
"parentId": 29,
"value": "Child 13",
"children": []
},
{
"id": 122,
"parentId": 29,
"value": "Child 14",
"children": []
},
{
"id": 129,
"parentId": 29,
"value": "Child 15",
"children": []
},
{
"id": 136,
"parentId": 29,
"value": "Child 16",
"children": []
},
{
"id": 143,
"parentId": 29,
"value": "Child 17",
"children": []
},
{
"id": 157,
"parentId": 150,
"value": "Child 18",
"children": []
},
{
"id": 150,
"parentId": 29,
"value": "Child 19",
"children": []
},
{
"id": 29,
"parentId": null,
"value": "Root Parent 05",
"children": []
}
]
function DataRollUp(input) {
var hasParent = [];
var output = []
for (i of input) {
if (i.parentId) {
hasParent.push(i);
} else {
output.push(i);
}
}
for (i of hasParent) {
var parent = output.find(record => record.id == i.parentId)
if (parent) {
parent.children.push(i);
}
}
console.log(output);
return output;
}
DataRollUp(inputArray)