数组转tree
let arr =[
{
id:1,name:'研发部',pid:0
},
{
id:2,name:'市场部',pid:1
},
{
id:3,name:'行政部',pid:1
},
{
id:4,name:'研发部1',pid:3
},
{
id5,name:'研发部2',pid:4
}
]
function arrayToTree(items){
const result = [];
const itemMap = {};
for(const item of items){
const id = item.id;
const pid = item.pid;
if(!itemMap[id]){
itemMap[id] = {
children:[]
}
}
itemMap[id] = {
...item,
children:itemMap[id]['children']
}
const treeItem = itemMap[id];
if(pid===0){
result.push(treeItem);
}else{
if(!itemMap[pid]){
itemMap[pid]={
children:[],
}
}
itemMap[pid].children.push(treeItem)
}
}
return result;
}