javascript
复制代码
let data = [
{ id: 1, name: "123", pid: 1 },
{ id: 2, name: "123", pid: 1 },
{ id: 3, name: "123", pid: 1 },
{ id: 4, name: "123", pid: 2 },
{ id: 5, name: "123", pid: 1 },
{ id: 6, name: "123", pid: 2 },
{ id: 7, name: "123", pid: 1 },
{ id: 8, name: "123", pid: 2 },
{ id: 9, name: "123", pid: 1 },
]
let result = []; // 存储最终结果的数组
data.forEach(item => {
// 获取到元素父级
let parent = data.find(element => element.id === item.pid);
let index = result.findIndex(i => i.id === parent.id);
// 不存在就将父级 添加 进 result数组中
if (index === -1) {
result.push(parent);
}
// 判断当前元素是否和父级一致,一致就没必要再次添加
if(item.id != parent.id){
if (!parent.children) {
parent.children = [];
}
parent.children.push(item);
}
});
console.log(result);