数组转tree

156 阅读1分钟

数组转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;
}