let list =[
{id:3,name:'部门C',parentId:1},
{id:5,name:'部门E',parentId:2},
{id:1,name:'部门A',parentId:0},
{id:2,name:'部门B',parentId:0},
{id:8,name:'部门H',parentId:4},
{id:7,name:'部门G',parentId:2},
{id:4,name:'部门D',parentId:1},
{id:6,name:'部门F',parentId:3}
];
function convert(list) {
const res = [];
const map = list.reduce((pre, cur) => {
pre[cur.id] = cur;
return pre
}, {});
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)
}
}
console.log('list==>', list);
console.log('map==>', map);
return res
}
let newList = convert(list);
console.log('newList==>', newList);
把原始 list 转换成树形结构,parentId 为多少就挂载在该 id 的属性 children 数组下