js算法题:数组转换成tree树

   function treeNode(root) {
      const res = [];
      const itemMap = {}
      root.forEach(item => {
        const id = item.id;
        const pid = item.pid;
        if(!itemMap[id]){
          itemMap[id] = {
            children:[]
          }
        }
        itemMap[id] = {
          ...item,
          children: itemMap[id].children
        }
        const temp = itemMap[id];
        if(pid === '') {
          res.push(temp)
        }else {
          itemMap[pid].children.push(temp)
        }
      });
      return res
    }
  const data = [
      { id: "01", name: "张大大", pid: "", job: "项目经理" },
      { id: "02", name: "小亮", pid: "01", job: "产品leader" },
      { id: "03", name: "小美", pid: "01", job: "UIleader" },
      { id: "04", name: "老马", pid: "01", job: "技术leader" },
      { id: "05", name: "老王", pid: "01", job: "测试leader" },
      { id: "06", name: "老李", pid: "01", job: "运维leader" },
      { id: "07", name: "小丽", pid: "02", job: "产品经理" },
      { id: "08", name: "大光", pid: "02", job: "产品经理" },
      { id: "09", name: "小高", pid: "03", job: "UI设计师" },
      { id: "10", name: "小刘", pid: "04", job: "前端工程师" },
      { id: "11", name: "小华", pid: "04", job: "后端工程师" },
      { id: "12", name: "小李", pid: "04", job: "后端工程师" },
      { id: "13", name: "小赵", pid: "05", job: "测试工程师" },
      { id: "14", name: "小强", pid: "05", job: "测试工程师" },
      { id: "15", name: "小涛", pid: "06", job: "运维工程师" },
    ];

treeNode(data ) 

  

posted @ 2022-09-21 15:55  zcm花开不败  阅读(18)  评论(0编辑  收藏  举报