const array = [
{ id: 1, value: "菜单1", p_id: null },
{ id: 2, value: "菜单2", p_id: 1 },
{ id: 3, value: "菜单3", p_id: 1 },
{ id: 4, value: "菜单4", p_id: 2 },
{ id: 5, value: "菜单5", p_id: null },
{ id: 6, value: "菜单6", p_id: 5 },
{ id: 7, value: "菜单7", p_id: null },
{ id: 8, value: "菜单8", p_id: 6 }
]
const changeArr = (arr) => {
return arr.reduce((prev, cur) => {
let findItem = arr.find(item => item.id === cur.p_id);
if(findItem) {
findItem.children ?. length ? findItem.children.push(cur) : findItem.children = [cur];
}else {
prev.push(cur);
}
return prev;
}, [])
}
let newArr = changeArr(array);
console.log(newArr)