复杂的多级数组数据转成适合el-cascader的数据格式

原始数据: 

 [
          {
            children: [
              {
                children: [
                  {
                    id: "d44d4ddwedd",
                    label: "方法",
                    current: "1",
                    currentNum: 0,
                    deleteFlag: 0,
                    deptCode: "000",
                    disableFlag: 0,
                    hasPageFlag: true,
                  },
                  {
                    id: "d44d4ddwedd",
                    label: "个人",
                    current: "1",
                    currentNum: 0,
                    deleteFlag: 0,
                    deptCode: "000",
                    disableFlag: 0,
                    hasPageFlag: true,
                  },
                ],
                id: "d44d4ddwedd",
                label: "第三",
                current: "1",
                currentNum: 0,
                deleteFlag: 0,
                deptCode: "000",
                disableFlag: 0,
                hasPageFlag: true,
              },
              {
                id: "d44d4ddwedd",
                label: "第四",
                current: "1",
                currentNum: 0,
                deleteFlag: 0,
                deptCode: "000",
                disableFlag: 0,
                hasPageFlag: true,
              },
            ],
            id: "d44d4ddwedd",
            label: "第一",
            current: "1",
            currentNum: 0,
            deleteFlag: 0,
            deptCode: "000",
            disableFlag: 0,
            hasPageFlag: true,
          },
          {
            children: [
              {
                id: "d44d4ddwedd",
                label: "法人",
                current: "1",
                currentNum: 0,
                deleteFlag: 0,
                deptCode: "000",
                disableFlag: 0,
                hasPageFlag: true,
              },
              {
                id: "d44d4ddwedd",
                label: "热发",
                current: "1",
                currentNum: 0,
                deleteFlag: 0,
                deptCode: "000",
                disableFlag: 0,
                hasPageFlag: true,
              },
            ],
            id: "d344dfd34edd",
            label: "第二",
            current: "1",
            currentNum: 0,
            deleteFlag: 0,
            deptCode: "000",
            disableFlag: 0,
            hasPageFlag: true,
          },
        ];

需要的数据:

[
          {
            children: [
              {
                children: [
                  {
                    value: "d44d4ddwedd",
                    label: "方法",
                  },
                  {
                    value: "d44d4ddwedd",
                    label: "个人",
                  },
                ],
                value: "d44d4ddwedd",
                label: "第三",
              },
              {
                value: "d44d4ddwedd",
                label: "第四",
              },
            ],
            value: "d44d4ddwedd",
            label: "第一",
          },
          {
            children: [
              {
                value: "d44d4ddwedd",
                label: "法人",
              },
              {
                value: "d44d4ddwedd",
                label: "热发",
              },
            ],
            value: "d344dfd34edd",
            label: "第二",
          },
        ];

从原始数据到想要的数据,因为是多级数组,也不确定它有多少级,所以要用到递归

 let map = {
          value: "id",
          label: "label",
          children: "children",
        };
        let arr = convertTree(res.data, map);

        this.officeOpts = arr;

        function convertTree(tree, map) {
          const result = [];
          console.log(1);
          // 遍历 tree
          tree.forEach((item) => {
            // 读取 map 的键值映射
            const value = item[map.value];
            const label = item[map.label];
            let children = item[map.children];

            // 如果有子节点,递归
            if (item.children.length) {
              children = convertTree(children, map);
            } else {
              children = undefined;
            }

            result.push({
              value,
              label,
              children,
            });
          });
          return result;
        }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值