关于前端:js-反向递归根据子节点值寻找父节点

data = [
{
  value: 1,
  name:"1",
  children:[
    {
      value: 2,
      name:"2",
    }
  ]
},
{
  value: 3,
  name:"3",
  children:[
    {
      value: 4,
      name:"4",
    }
  ]
}];

val = 4;
// 反向查找父节点

getNodePath(node, val, path) { // node:所有数据,val:后盾返回的id, path:要渲染的数组id
  for (let i = 0; i < node.length; i++) {
    const ele = node[i];
    if (ele.value == val) {
      path.push(ele.value);
      return path
    } else if (ele.children && ele.children.length > 0) {
      if (ele.children.some(row => row.value == val)) {
        path.unshift(ele.value);
        this.getNodePath(ele.children,val,path);
      } else {
        this.getNodePath(ele.children,val,path);
      }
    }
  }
  return path;
},

//应用
puth = this.getNodePath(data,val,[]);
// [3,4]

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理