构建目录树结构
// 示例节点结构 const nodes = [ { id: 1, parentId: null, name: 'Root' }, { id: 4, parentId: 2, name: 'Grandchild 1' }, { id: 5, parentId: 2, name: 'Grandchild 2' }, { id: 3, parentId: 1, name: 'Child 2' }, { id: 2, parentId: 1, name: 'Child 1' }, ]; // 辅助函数:通过id查找节点 function findNodeById(tree, id) { if (!tree || !tree.length) return null; for (let node of tree) { if (node.id === id) { return node; } else if (node.children && node.children.length) { const found = findNodeById(node.children, id); if (found) { return found; } } } return null; } // 主函数:构建树结构 function buildTree(nodes, parentId = null) { console.log(nodes,11111) return nodes .filter(node => node.parentId === parentId) // 筛选出当前层级的节点 .map(node => ({ ...node, children: buildTree(nodes, node.id) // 递归构建子节点 })); } // 构建树 const tree = buildTree(nodes); console.log(tree,1123) // 通过id查询节点 const nodeIdToFind = 1; const foundNode = findNodeById(tree, nodeIdToFind); console.log(foundNode); // 输出: { id: 4, parentId: 2, name: 'Grandchild 1', children: [] }