背景: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,大功告成!(原理:先找最直接的子节点,然后再递归求出子孙...)
结果如下: