json 陣列已知父節點,求所有子節點

豬豬是天才發表於2019-03-08

背景:json 陣列,每個 json 裡都有 parent 欄位,想要求具體某個 parent 下的所有子節點

結構如下:

json 陣列已知父節點,求所有子節點

例如我想求 parent 為 3 的所有子節點,也就是 4,5,6,7

程式碼如下:

let arr = [
      {
        id:3,
        parent:''
      },
      {
        id:4,
        parent:3
      },
      {
        id:6,
        parent:4
      },
      {
        id:7,
        parent:4
      },
      {
        id:5,
        parent:3
      }
    ]
    
    let tempArr = [],temp
    function preOrder (arr, id) {
      for (let i = 0;i < arr.length;i++) {
        if (arr[i].parent === id) {
          tempArr.push(arr[i])
          preOrder(arr, arr[i].id)
        }
      }
      return tempArr
    }
    console.log(preOrder(arr,3));複製程式碼

ok,大功告成!(原理:先找最直接的子節點,然後再遞迴求出子孫...)

結果如下:

json 陣列已知父節點,求所有子節點



相關文章