背景:json 陣列,每個 json 裡都有 parent 欄位,想要求具體某個 parent 下的所有子節點
結構如下:
例如我想求 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,大功告成!(原理:先找最直接的子節點,然後再遞迴求出子孫...)
結果如下: