简单使用递归
let list = [
{ id: 1001, parentId: 0, name: "AA" },
{ id: 1002, parentId: 1001, name: "BB" },
{ id: 1003, parentId: 1002, name: "CC" },
{ id: 1004, parentId: 1001, name: "DD" },
{ id: 1005, parentId: 1004, name: "EE" }
]
function aaa(list) {
let newOBJ = {}
list.forEach(temp => {
let index = list.findIndex(item => item.id == temp.parentId)
function digui(obj, newOBJ) {
for (let item in newOBJ) {
if (obj.name == item) {
newOBJ[item][temp.name] = {}
} else {
digui(obj, newOBJ[item])
}
}
}
if (index > -1) {
digui(list[index], newOBJ)
} else {
newOBJ[temp.name] = {}
}
});
return newOBJ
}
console.log(aaa(list))