Tree型结构数据 根据子节点id获取上级所有的父节点id

514 阅读1分钟
let arr = [
    {
    id:1,
    name:'汽车',
    children:[
      {
       children:[
                {
                    id:13,
                    name:'鲜花',
                }
         ]
         id:12,
         name:'水果',
      },
    {
       id:13,
       name:'牛奶',
     },
    ]
  }
]
  • 1、使用emelemn ui el-cascader 组件回显时需要子节点上所有父节点的id才能正常回显出来效果 但是后台那边值只需要传当前节点选中的id 但是我们页面根据item只能获取到当前id 这时我们就需要根据当前获取的id去找所有父节点id
 //获取子节点下所有的父节点id
    ChainBack(id){
      let arr = this.doMatch(Arr, id);//Arr是后台返回的整个数组 id是获取当前节点的id
     console.log(arr)//获取包括当前节点和所有父节点的id
    },
 doMatch(treeData, key) {
      let arr = [];
      let returnArr = [];
      let depth = 0;
      function childrenEach(childrenData, depthN) {
        for (let j = 0; j < childrenData.length; j++) {
          depth = depthN;
          arr[depthN] = childrenData[j].id;
          if (childrenData[j].id == key) {
            returnArr = arr.slice(0, depthN + 1);
            break;
          } else {
            if (childrenData[j].children) {
              depth++;
              childrenEach(childrenData[j].children, depth);
            }
          }
        }
        return returnArr;
      }
      return childrenEach(treeData, depth);
    },