JavaScript
递归
javascript
const list = [
{ id: 1, name: "部门1", pid: 0 },
{ id: 2, name: "部门2", pid: 1 },
{ id: 3, name: "部门3", pid: 1 },
{ id: 4, name: "部门4", pid: 3 },
{ id: 5, name: "部门5", pid: 4 },
{ id: 6, name: "部门6", pid: 0 },
{ id: 7, name: "部门7", pid: 6 },
]
function dg(list, result, pid) {
list.forEach((e) => {
if (e.pid == pid) {
let res = { ...e, children: [] };
result.push(res);
dg(list, res.children, e.id)
}
});
}
let result = [];
dg(list, result, 0)
console.log("结果:",result);
//一行实现
function nest(pid ,arr){
return arr.filters(item=>item.id==pid).map(item=>({...item,children:nest(item.id,arr)}))
}