实现列表转树的convert方法
作者:互联网
时间复杂度为O(n):
其他遍历
function convert(list) { const res = [] const map = list.reduce((res, v) => (res[v.id] = v, res), {}) for (const item of list) { if (item.parentId === 0) { res.push(item) continue } if (item.parentId in map) { const parent = map[item.parentId] parent.children = parent.children || [] parent.children.push(item) } } return res }
深度遍历:
function convert(source, parentId = 0){ let trees = []; for (let item of source) { if(item.parentId === parentId) { let children = convert(source, item['id']); if(children.length) { item.children = children } trees.push(item); } } return trees; } let list =[ {id:1,name:'部门A',parentId:0}, {id:2,name:'部门B',parentId:0}, {id:3,name:'部门C',parentId:1}, {id:4,name:'部门D',parentId:1}, {id:5,name:'部门E',parentId:2}, {id:6,name:'部门F',parentId:3}, {id:7,name:'部门G',parentId:2}, {id:8,name:'部门H',parentId:4} ]; const result = convert(list);
标签:convert,name,res,转树,children,列表,item,parentId,id 来源: https://www.cnblogs.com/sj-blogs/p/16378755.html