根据某个树节点找出此节点以上的路径

一、找节点以上路径

    // 根据节点找出路径
      getPathByTheNode(treeData, key, attr) {
        // 首先我们先定义个数组,用来保存路径节点id
        let nodePathArray = []

        // (tree为目标树,targetId为目标节点id)
        function getNodeRoute(tree, targetId) {
          for (let index = 0; index < tree.length; index++) {
            if (tree[index].children) {
              let endRecursiveLoop = getNodeRoute(tree[index].children, targetId)
              if (endRecursiveLoop) {
                nodePathArray.push(tree[index][attr])
                return true
              }
            }
            if (tree[index][attr] === targetId) {
              nodePathArray.push(tree[index][attr])
              return true
            }
          }
        }

        getNodeRoute(treeData, key) //查找id为112的节点路径
        let res = nodePathArray.reverse().join('->')
        return res
      },

// 调用
this.leftChildObj.treeData为树形树的数据
let res = this.getPathByTheNode(this.leftChildObj.treeData, e.node.dataRef.title,'title')
console.log(res)
Snipaste_2021-04-07_12-53-15.png
Snipaste_2021-04-07_12-54-32.png
Snipaste_2021-04-07_12-55-16.png
Snipaste_2021-04-07_12-55-36.png

二、找出树所有路径
1.先找出最底层节点,没有子级或者子级长度为0

      findIdByName(initObj) {
        let arr = []

        function find(obj) {
          for (let i = 0; i < obj.length; i++) {
            if (!obj[i].children || obj[i].children.length === 0) {
              arr.push(obj[i].title)
            } else {
              find(obj[i].children);
            }
          }
        }

        find(initObj);
        return arr
      },

2.遍历最底层节点,根据某个树节点找出此节点以上的路径

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容