const tree = [
{id: -1,parentId: null},
{id: 0,parentId: -1},
{id: 1,parentId: -1},
{id: 2,parentId: -1},
{id: 3, parentId: 2},
{id: 4, parentId: 3},
]
转化为
[{"id":-1,"children":[{"id":0},{"id":1},{"id":2,"children":[{"id":3,"children":[{"id":4}]}]}]}]
function listToTree(list){
let map = new Map()
list.forEach(item=>{
if(!map.has(item.parentId)){
map.set(item.parentId, [])
}
map.get(item.parentId).push(item)
})
function rev(root){
return map.get(root).map(item=>{
if(map.has(item.id)){
item.children = rev(item.id)
}
delete item.parentId
return item
})
}
return rev(null)
}
面试一脸懵:listToTree
原创
©著作权归作者所有:来自51CTO博客作者StavinLi的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:js算法双指针
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
面试一脸懵:前端借助后端简单运算
前端无法运用加减乘除,大小于,所
前端 后端 面试