根据最底层id,遍历不知层级树,拿到完整上级数组的递归

454 阅读1分钟

获取上级数组

getTreeArr(key, treeData) {
  let arr = [] // 在递归时操作的数组
  let returnArr = [] // 存放结果的数组
  let rank = 0 // 定义全局层级
  // 定义递归函数
  function childrenEach(childrenData, rankNum) {
    for (var j = 0; j < childrenData.length; j++) {
      rank = rankNum // 将执行的层级赋值 到全局层级
      arr[rankNum] = (childrenData[j].id)
      if (childrenData[j].id == key) {
        returnArr = arr.slice(0, rankNum+1) //将目前匹配的数组,截断并保存到结果数组,不能直接赋值赋值,存在指针关系
        break
      } else {
        if (childrenData[j].children) {
          rank ++
          childrenEach(childrenData[j].children, rank)
        }
      }
    }
    return returnArr
  }
  return childrenEach(treeData, rank)
},