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 } ]; // 转换后的结果如下 let result = [{ id: 1, name: '部门A', parentId: 0, children: [{ id: 3, name: '部门C', parentId: 1, children: [{ id: 6, name: '部门F', parentId: 3 }, { id: 16, name: '部门L', parentId: 3 }] }, { id: 4, name: '部门D', parentId: 1, children: [{ id: 8, name: '部门H', parentId: 4 }] } ] }]; function convert(list) { let res = []; const map = {}; list.forEach(l => { map[l.id] = l; }) list.forEach(l => { if (!l.parentId) { res.push(l); } else { const parent = map[l.parentId]; if (parent.children) { parent.children.push(l); } else { parent.children = [l]; } } }) return res; } convert(list);
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:

文章字数:171

本文作者:泽鹿

发布时间:2019-08-01, 14:03:39

最后更新:2019-08-01, 14:10:28

原始链接:http://panyifei.github.io/2019/08/01/前端面试/代码/链表/list转链表/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏