列表转成树形结构
题目
let arr = [
{ id: 1, name: '部门1', pid: 0 },
{ id: 2, name: '部门2', pid: 1 },
{ id: 3, name: '部门3', pid: 1 },
{ id: 4, name: '部门4', pid: 3 },
{ id: 5, name: '部门5', pid: 4 },
{ id: 6, name: '部门6', pid: 0 },
]
给定数组,数组中每一项包含 id, name ,pid, 将数组转化为 树形结构
答案
遍历数组,使用Map 存储 子项关系
function listToTree(arr) { const res = [] const map = new Map() // map 存储所有元素的子项 for (let i of arr) { if(map.get(i.pid)) { map.get(i.pid).push(i) }else { map.set(i.pid, [i]) } } arr.forEach(item => { if(map.get(item.id)) { item.children = map.get(item.id) } if(!item.pid) { res.push(item) } }); return res } // test const arr = [ { id: 1, name: '部门1', pid: 0 }, { id: 2, name: '部门2', pid: 1 }, { id: 3, name: '部门3', pid: 1 }, { id: 4, name: '部门4', pid: 3 }, { id: 5, name: '部门5', pid: 4 }, { id: 6, name: '部门6', pid: 0 }, ] listToTree(arr)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论