一、找节点以上路径
// 根据节点找出路径
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)
二、找出树所有路径
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.遍历最底层节点,根据某个树节点找出此节点以上的路径