const arr = [
{ id: 1, name: "name1", parentId: 0 },
{ id: 2, name: "name2", parentId: 1 },
{ id: 3, name: "name3", parentId: 1 },
{ id: 4, name: "name4", parentId: 3 },
{ id: 5, name: "name5", parentId: 4 },
];
const getTree = (arr) => {
const result = [];
const itemMap = {};
for (const item of arr) {
const { id, parentId } = item;
if (!itemMap[id]) {
itemMap[id] = { children: [] };
}
itemMap[id] = { ...item, children: itemMap[id]["children"] };
const treeItem = itemMap[id];
if (parentId === 0) {
result.push(treeItem);
} else {
if (!itemMap[parentId]) {
itemMap[parentId] = { children: [] };
}
itemMap[parentId].children.push(treeItem);
}
}
return result;
};