平铺数据转树结构数据reduce()方法

平铺数据转树结构数据reduce()方法

 <script>
      //从后台获取的对象数组,根据对象的type进行分组合并成tree树形展示数据
      const dataArr = [
        { type: "治理层", name: "hive_82", reserve: "2", id: 1 },
        { type: "原始数据层", name: "qwe", reserve: "1", id: 2 },
        { type: "贴源层", name: "mysql_exchangis", reserve: "3", id: 3 },
        { type: "治理层", name: "links_188", reserve: "1", id: 4 },
        { type: "贴源层", name: "mysql_ces", reserve: "2", id: 5 },
      ];
      let treeData = dataArr.reduce((cur, next) => {
        const obj = cur.find((curItem) => curItem.label === next.type);
        if (obj) {
          if (obj.children.indexOf(next.id) === -1) {
            //去重处理
            obj.children.push({
              ...next,
              label: next.name,
            });
          }
        } else {
          const newObj = {
            label: next.type,
            children: [
              {
                ...next,
                label: next.name,
              },
            ],
          };
          cur.push(newObj);
        }
        return cur;
      }, []);

      //   合并后的结果:
      console.log(treeData, "treeData");
      //  treeData = [
      //       {
      //           label: '治理层',
      //           children: [
      //               { type: '治理层', name: 'hive_82', reserve: '2', id: 1, label: 'hive_82' },
      //               { type: '治理层', name: 'links_188', reserve: '1', id: 4, label: 'links_188' }
      //           ]
      //       },
      //       {
      //           label: '原始数据层',
      //           children: [
      //               { type: '原始数据层', name: 'qwe', reserve: '1', id: 2, label: 'qwe' }
      //           ]
      //       },
      //       {
      //           label: '贴源层',
      //           children: [
      //               { type: '贴源层', name: 'mysql_exchangis', reserve: '3', id: 3, label: 'mysql_exchangis' },
      //               { type: '治理层', name: 'mysql_ces', reserve: '2', id: 5, label: 'mysql_ces' }
      //           ]
      //       }
      //   ]
    </script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值