const arr = [
{
"name": "最外层节点",
"id": "-1",
"parentId": null
},
{
"name": "第一层节点",
"id": "1",
"parentId": "-1"
},
{
"name": "第二层节点",
"id": "1-1",
"parentId": "1"
},
{
"name": "第三层节点",
"id": "1-1-1",
"parentId": "1-1"
},
{
"name": "第四层节点",
"id": "1-1-1-1",
"parentId": "1-1-1"
},
{
"name": "第五层节点",
"id": "1-1-1-1-1",
"parentId": "1-1-1-1"
},
{
"name": "第六层节点",
"id": "1-1-1-1-1-1",
"parentId": "1-1-1-1-1"
}
]
function buildTree(arr = []) {
arr.forEach(item => {
item.children = arr.filter(v => v.parentId === item.id);
buildTree(Array.isArray(item?.children) ? item.children : []);
})
return arr.filter(v => !v.parentId)
}
console.log(buildTree(arr))
/*
输出结果:
[
{
"name": "最外层节点",
"id": "-1",
"parentId": null,
"children": [
{
"name": "第一层节点",
"id": "1",
"parentId": "-1",
"children": [
{
"name": "第二层节点",
"id": "1-1",
"parentId": "1",
"children": [
{
"name": "第三层节点",
"id": "1-1-1",
"parentId": "1-1",
"children": [
{
"name": "第四层节点",
"id": "1-1-1-1",
"parentId": "1-1-1",
"children": [
{
"name": "第五层节点",
"id": "1-1-1-1-1",
"parentId": "1-1-1-1",
"children": [
{
"name": "第六层节点",
"id": "1-1-1-1-1-1",
"parentId": "1-1-1-1-1",
"children": []
}
]
}
]
}
]
}
]
}
]
}
]
}
]
*/