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

本文介绍了JavaScript中如何通过递归遍历树形数据结构,实现根据ID获取节点的所有父节点和子节点的方法。提供了三个关键函数:getParentId用于获取父节点,getId用于获取指定ID的节点,getNodeId用于获取所有子节点。这些函数在数据检索和操作中非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

function getParentId(list,id) {
  for (let i in list) {
      if(list[i].id===id){
         return [list[i]]
      }
      if(list[i].subMenuList!=null){
          let node = getParentId(list[i].subMenuList,id);
          if(node!==undefined){
            return node.concat(list[i])
          }
       }
     }
}

二、根据ID获取该节点的对象

function getId(list,id) {
        for (let i in list) {
            if(list[i].id==id){
            return [list[i]]
          }
          if(list[i].subMenuList){
            let node=getParentId(list[i].subMenuList,id);
            if(node!==undefined){
                return node;
               }
          }
        }    
    }

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

function getNodeId(list,newNodeId=[]) {
        for (let i in list) {
            newNodeId.push(list[i])
          if(list[i].subMenuList){
                  getNodeId(list[i].subMenuList,newNodeId);
            }
        } 
        return newNodeId;      
    }

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

参考:Js 树形数据递归查询该节点的所有父级节点、查询该节点的所有子节点 - Empress& - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值