将扁平数据转换成树行结构

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: "运维工程师" }
      ];

 定义一个新的是需要遍历的扁平数组

 function arrTotree(data) {
        // 定义需要返回的树形结构数据
        const treeDate = [];

        data.forEach(item => {
           //item.pid === "" 说明是*的
          if (item.pid === "") {
            treeDate.push(item);
          }
          // data.filter过滤 括号里面是一个箭头函数
          // value是children 的每一项
          // 让children的每一项pid和遍历的每一项id做对比 一样了说明是一个组的
          // 然后赋值给新的children 新的children又是一个数组和*的组长对象{} 是同一级
          const children = data.filter(value => value.pid === item.id);
          item.children = children;
        });

        return treeDate;
      }

      const res = arrTotree(data);
      console.log(res);

将扁平数据转换成树行结构

上一篇:js元素节点笔记【2021.10.12】


下一篇:微信小程序生成跳转体验版二维码