const arr = [
{ id: 6, name: '1-2', pId: 1 },
{ id: 7, name: '1-3', pId: 1 },
{ id: 8, name: '2-2', pId: 4 },
{ id: 3, name: '1-1-1', pId: 2 },
{ id: 9, name: '2-1-1', pId: 5 },
{ id: 2, name: '1-1', pId: 1 },
{ id: 5, name: '2-1', pId: 4 },
{ id: 4, name: '2' },
{ id: 1, name: '1' },
];
const toTree = (list) => {
const nArr = [...list];
list.forEach(item => {
if (!item.children) item.children = [];
if (item.pId) {
const a = list.findIndex(o => o.id === item.pId)
if (a > -1) {
if (nArr[a].children) {
nArr[a].children.push(item);
} else {
nArr[a].children = [item]
}
}
}
});
return nArr.filter(item => !item.pId);
};
const tree = toTree(arr);
console.log(tree)