Js 樹形數據遞歸查詢該節點的所有父級節點、查詢該節點的所有子節點


Js 遞歸樹形數據查詢該節點的所有父級節點、查詢該節點的所有子節點等

數據

var  data2= [
         {
          id: 1,
          label: '一級 1',
          children: [{
            id: 4,
            label: '二級 1-1',
            children: [{
              id: 9,
              label: '三級 1-1-1'
            }, {
              id: 10,
              label: '三級 1-1-2'
            }]
          }]
        }, 
        {
          id: 2,
          label: '一級 2',
          children: [{
            id: 5,
            label: '二級 2-1'
          }, {
            id: 6,
            label: '二級 2-2'
          }]
        }, 
        {
          id: 3,
          label: '一級 3',
          children: [{
            id: 7,
            label: '二級 3-1'
          }, {
            id: 8,
            label: '二級 3-2'
          }]
        }];
    

方法

根據ID獲取該節點的所有父節點的對象

  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獲取該節點的對象

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()這個方法

  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);//打印出來就是想要的數據 

我這里的方法都是查找的對象,如果只是返回ID,根據需要Push的時候改成Push id 即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM