ElUi 级联选择器 子节点递归父节点

// 递归查询父节点
    findFather() {
      const that = this;
      // 子节点的ID
      const key = parseInt(103);
      const find = function (list, node) {
        list.some(item => {
          // 如果匹配到了
          if (item.id == key) {
            node.push(key);
            console.log(node);
            // ps:这里是个坑,我没找到办法直接把值return出去关闭掉整个循环,所以我直接定义个变量赋值(ಥ_ಥ)
            that.defOptions = node;
          } else {
          	// 如果子节点不为空 && 现有的返回结果Node里不存在我们的key(ps:之所以要判断也是因为上面那个坑(ಥ_ಥ).....)
            if (item.children && !(node.includes(key))) {
              // 先把这次遍历的父节点加到要返回的Node里面
              node.push(item.id);
              // 没找到匹配数据的话就继续用子节点遍历一直向下
              find(item.children,node);
              // 如果此次遍历未找到子节点则删除上面添加的父节点
              if (!node.includes(key)) {
                let index = node.indexOf(item.id);
                node.splice(index, index  + 1)
              }
            }
          }
        });
      };
      // 示例数据
      const mokeList = [
        {
          "id": 100,
          "label": "若依科技",
          "value": 100,
          "children": [
            {
              "id": 101,
              "label": "深圳总公司",
              "value": 101,
              "children": [
                {
                  "id": 103,
                  "label": "经济和科技促进局",
                  "value": 103
                },
                {
                  "id": 104,
                  "label": "人力资源和社会保障局",
                  "value": 104
                },
                {
                  "id": 105,
                  "label": "发展改革局",
                  "value": 105
                },
                {
                  "id": 106,
                  "label": "财政局",
                  "value": 106
                },
                {
                  "id": 107,
                  "label": "运维部门",
                  "value": 107
                }
              ]
            },
            {
              "id": 102,
              "label": "长沙分公司",
              "value": 102,
              "children": [
                {
                  "id": 108,
                  "label": "市场部门",
                  "value": 108
                },
                {
                  "id": 109,
                  "label": "财务部门",
                  "value": 109
                }
              ]
            }
          ]
        }
      ];
      return find(mokeList, []);
    }
  }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值