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
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 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" 转载请保留原文链接及作者。