背景:json 數組,每一個 json 裏都有 parent 字段,想要求具體某個 parent 下的全部子節點json
結構以下:數組
例如我想求 parent 爲 3 的全部子節點,也就是 4,5,6,7bash
代碼以下:ui
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,大功告成!(原理:先找最直接的子節點,而後再遞歸求出子孫...)spa
結果以下:code