背景: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