技术实践

Js 树形数据递归查询该节点的所有父级节点

Js 树形数据递归查询该节点的所有父级节点、查询该节点的所有子节点

羊先生的头像
羊先生2021.10.27 · 1 分钟阅读 · 69 阅读
Js 树形数据递归查询该节点的所有父级节点封面
文章正文还需 1 分钟

根据ID获取该节点的所有父节点的对象

js 复制代码
 function getParentId(list,id) {
        for (let i in list) {
            if(list[i].id==id){
            return [list[i]]
          }
          if(list[i].children){
            let node=getParentId(list[i].children,id);
            if(node!==undefined){
                return node.concat(list[i])
               }
          }
        }        
    }
   getParentId(data2,10)//打印出来就是想要的数据

根据ID获取该节点的对象

js 复制代码
function getId(list,id) {
        for (let i in list) {
            if(list[i].id==id){
            return [list[i]]
          }
          if(list[i].children){
            let node=getParentId(list[i].children,id);
            if(node!==undefined){
                return node;
               }
          }
        }    
    }

      getId(data2,4)//打印出来就是想要的数据

根据ID获取所有子节点的对象,首先把该节点的对象找出来,上面getId()这个方法

js 复制代码
 function getNodeId(list,newNodeId=[]) {
        for (let i in list) {
            newNodeId.push(list[i])
          if(list[i].children){
                  getNodeId(list[i].children,newNodeId);
            }
        } 
        return newNodeId;      
    }

      //查找id=4的所有子级节点
    let objId=getId(data2,4);
    let childId=getNodeId(objId);//打印出来就是想要的数据