递归算法查找子节点

情形: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;
}
posted @ 2022-03-21 15:06  YuZhu1234  阅读(436)  评论(0)    收藏  举报