You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套对象数组转换为含叶子节点路径映射的目标数组?

实现方案

思路

通过递归遍历嵌套对象,跟踪每个节点的祖先ID路径。当遇到没有children属性的叶子节点时,将该节点的ID作为键,祖先ID路径作为值,生成目标对象并加入结果数组。

代码实现

function convertNestedArray(tempArr) {
  const result = [];
  
  function traverse(node, path) {
    if (node.children) {
      // 递归遍历子节点,将当前ID加入路径
      traverse(node.children, [...path, node.id]);
    } else {
      // 叶子节点,生成映射对象
      result.push({ [node.id]: path });
    }
  }
  
  // 处理输入数组中的每个根节点
  tempArr.forEach(item => traverse(item, []));
  
  return result;
}

// 测试示例
let tempArr = [
 {
   id:1,
   children:{
     id:2,
     children:{
       id:100
     }
   }
 }
];

const arr = convertNestedArray(tempArr);
console.log(arr); // 输出: [ { 100: [ 1, 2 ] } ]

说明

  • 递归函数traverse负责深度遍历嵌套结构,每次进入子节点时都会复制当前路径并添加父节点ID,避免路径引用混乱。
  • 支持输入数组包含多个根节点,以及任意深度的嵌套层级。
  • 当节点存在children属性时继续遍历,否则将当前叶子节点的ID和路径存入结果。

内容的提问来源于stack exchange,提问作者Олег З

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:55:05