一个多维数组,如何简洁循环里面children,成功id后,要获取递归后每次上一级包含自身一级的name值

要在一个多维数组中循环遍历 children,并在找到具有特定 id 的节点后,获取从根节点到该节点路径上每一级(包括自身)的 name 值,你可以使用递归函数,并在递归的过程中收集这些 name 值。

const data = [  
  {  
    id: 1,  
    name: 'Root',  
    children: [  
      {  
        id: 2,  
        name: 'Level 1 - A',  
        children: [  
          {  
            id: 3,  
            name: 'Level 2 - A1',  
            // 其他属性...  
            children: [  
              // 更深层次的子节点...  
            ]  
          },  
          // 其他子节点...  
        ],  
      },  
      {  
        id: 4,  
        name: 'Level 1 - B',  
        // 无子节点或更多子节点...  
      },  
      // 其他子节点...  
    ],  
  },  
  // 其他根节点...  
];  
  
function findPathNamesById(nodes, targetId, pathNames = []) {  
  for (let node of nodes) {  
    // 将当前节点的 name 添加到路径中  
    const newPath = [...pathNames, node.name];  
      
    if (node.id === targetId) {  
      return newPath; // 找到目标节点,返回完整的路径名称数组  
    }  
      
    if (node.children && node.children.length > 0) {  
      // 递归查找子节点  
      const result = findPathNamesById(node.children, targetId, newPath);  
      if (result) {  
        return result; // 在子节点中找到目标节点,返回完整的路径名称数组  
      }  
    }  
  }  
    
  return null; // 没有找到目标节点,返回 null  
}  
  
// 使用示例  
const targetId = 3;  
const pathNames = findPathNamesById(data, targetId);  
if (pathNames) {  
  console.log('从根到目标节点的名称路径:', pathNames.join(' -> '));  
  // 输出: 从根到目标节点的名称路径: Root -> Level 1 - A -> Level 2 - A1  
} else {  
  console.log('未找到节点');  
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容