Skip to content

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)}))
}