根据id和parentId将数据组织成树状结构

时间:2025-01-19 08:21:21
// 默认数据,需要根据parentId和id将数据组织成树状结构 const data = [ { id: 2, name: "研发部", parentId: 1 }, { id: 4, name: "行政人事部", parentId: 1 }, { id: 6, name: "行政人事部下面的行政", parentId: 4 }, { id: 7, name: "行政人事部下面的人力资源", parentId: 4 }, { id: 20, name: "研发下面的产品组", parentId: 2 }, { id: 21, name: "研发下面的测试组", parentId: 2 }, { id: 22, name: "研发下面的运维组", parentId: 2 }, { id: 23, name: "研发下面的前端组", parentId: 2 }, { id: 24, name: "研发下面的后台组", parentId: 2 }, { id: 25, name: "研发下面的移动开发组", parentId: 2 }, { id: 99, name: "移动组下面的组", parentId: 25 }, { id: 98, name: "移动组下面的组", parentId: 25 }, ]; function formatToTree(ary, pid) { return ary .filter((item) => // 如果没有父id(第一次递归的时候)将所有父级查询出来 // 这里认为 === 1 就是最顶层 需要根据业务调整 pid === undefined ? item.parentId === 1 : item.parentId === pid ) .map((item) => { // 通过父节点ID查询所有子节点 item.children = formatToTree(ary, item.id); return item; }); } console.log(formatToTree(data))