节点数据类似这种
function getParent(data, id) {
var temp = [];
let originData = data;
function forFn(arr, id) {
arr.forEach((item) => {
if (item.menuId == id && item.parentId != 0) {
temp.push(item.menuId);
forFn(originData, item.parentId);
} else if (item.menuId == id && item.parentId == 0) {
temp.push(item.menuId);
return;
} else {
if (item.children) {
forFn(item.children, id);
}
}
});
}
forFn(data, id);
return temp;
}
如何当前的parentId是0,代表已到顶层,所以此时就可以终止循环;而如果当前parentId不是0,则应该拿当前的parentId进行递归循环,当如果当前我们传的是arr的话会发现并不是原始数据,所以我们可以在外边保存下原始数据,用这个原始数据进行循环;如果都不满足前面两项,我们可以递归判断此节点下面的子节点.
大致应该这样.