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

2次阅读

共计 543 个字符,预计需要花费 2 分钟才能阅读完成。

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]

正文完
 0