递归算法查找子节点
情形:pid为父节点的id,当pid为0时代表此节点为最高节点,找出list中的几个树形结构。
const handleClassification = (Classification:any) => {
let datalist:any[] = []
const a = Classification?.filter((item:any) => {
return item.pid === 0 //找出所有最高级节点
})
datalist = a
const findChildren = (list:any) => {
for (let i = 0; i < list.length; i++) {
const b = list.map((d:any, id:number) => {
const c = Classification?.filter((item:any) => {
return item.pid === d.materialCategoryId //找出所有pid为当前id的元素,即找出子元素
})
if (c.length > 0) {
findChildren(c) // 采用递归算法进行树的查找:如果子元素的个数大于0,则继续往下查找;直到找到没有子元素为止;
}
list[id].children = c
})
}
}
findChildren(datalist)
return datalist;
}

浙公网安备 33010602011771号