let listArr = [
{
"id": 1,
"name": "1-1",
"fatherId": 0,
},
{
"id": 2,
"name": "2-1",
"fatherId": 1
},
{
"id": 3,
"name": "2-2",
"fatherId": 1
},
{
"id": 4,
"name": "3-1",
"fatherId": 2
},
{
"id": 5,
"name": "1-2",
"fatherId": 0
},
{
"id": 6,
"name": "2-3",
"fatherId": 1
}
]
方法如下:
function HandleTree(arr) {
let nodesMap = []
for (let i = 0; i < arr.length; i++) {
nodesMap[arr[i].id] = arr[i];
}
let newTree = [];
for (let i = 0; i < arr.length; i++) {
if (!nodesMap[arr[i].fatherId]) {
newTree.push(arr[i])
}
else {
let fatherNode = nodesMap[arr[i].fatherId];
fatherNode.children = fatherNode.children ? fatherNode.children : [];
fatherNode.children.push(arr[i]);
}
}
return newTree;
}
console.log(HandleTree(listArr));
打印结果:
![](https://img-blog.csdnimg.cn/img_convert/a4b260034b838f48738017c5cfb9f2f2.png)