let data = [
{ id: 1, name: "部门A", parent: 0 },
{ id: 2, name: "部门A", parent: 0 },
{ id: 3, name: "部门A", parent: 1 },
{ id: 4, name: "部门A", parent: 1 },
{ id: 5, name: "部门A", parent: 2 },
{ id: 6, name: "部门A", parent: 3 },
{ id: 7, name: "部门A", parent: 2 },
{ id: 8, name: "部门A", parent: 4 },
];
function findChildren(data, result) {
if (result.length == 0) {
result.push(...data.get(0));
}
result.map((item) => {
if (data.has(item.id)) {
item.childen =findChildren(data,data.get(item.id));
}
return item;
});
return result;
}
function tree(data) {
let map = new Map();
for (let i = 0; i < data.length; i++) {
if (map.has(data[i].parent)) {
map.get(data[i].parent).push(data[i]);
} else {
map.set(data[i].parent, [data[i]]);
}
}
return findChildren(map, []);
}
tree(data);
首先通过Map将数据稍微整理一下,然后递归调用去给每个元素匹配到子元素集