将扁平化的节点数组,变成一棵树,使用tree-with-array
npm i tree-with-array
创建树的算法,通过idMapping的方式高效创建
https://blog.csdn.net/sinat_34560749/article/details/103832350
const data = [
{ id: 56, parentId: 62 },
{ id: 81, parentId: 80 },
{ id: 74, parentId: null },
{ id: 75, parentId: null },
{ id: 76, parentId: 80 },
{ id: 63, parentId: 62 },
{ id: 80, parentId: 86 },
{ id: 87, parentId: 86 },
{ id: 62, parentId: 74 },
{ id: 86, parentId: 75 },
];
const idMapping=data.reduce((prev,next,i)=>{
prev[next.id]=i;
return prev;
},{})
const rootArr=[];
data.forEach(node=>{
if(!node.parentId){
rootArr.push(node)
return;
}
const parent=data[idMapping[node.parentId]];
parent.children=[...parent.children|| [],node];
})
console.log(rootArr)
网友评论