JS deep递归组装数据

/**
 * 递归将数据组织成Tree结构
 *
 * @param targetData 目标数据
 * @param list 数据列表(平展的数据,不同层级都在一个集合中),从这个集合分拣属于自己的数据填充。
 * @param trackList (未实现,只是思路)跟踪列表,这个集合主要是标识路径数据,用于判断是否有子级引用父级的数据,从而导致无限循环的情况。
 */
function deepJoinTree(targetData,list,trackList){
    console.log("deepJoinTree",targetData,list,trackList)
    trackList = trackList || [targetData]
    let id = targetData.id;
    let children = list.filter(v2=>v2.pid===id)
    targetData['children'] = children
    children.forEach(v => {
        deepJoinTree(v,list,trackList.concat([v]))
    })
}
posted @ 2022-06-09 12:05  星小梦  阅读(137)  评论(0)    收藏  举报