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

如何将对象中numeric键替换为对应数字并保留原结构排序

解决JavaScript对象嵌套结构转换问题

需求说明

需要处理一个嵌套的JavaScript对象,完成三个核心操作:

  • 仅保留对象中名为numeric的属性,移除其他所有属性
  • 根据给定的映射关系,将每个节点的name替换为对应的数字键
  • 严格保留原对象的层级结构与节点排序

相关数据示例

输入对象

const inputObj = {
  "name": "Query1",
  "numeric": [
    {
      "name": "Basic Query Tasknode-2",
      "numeric": [],
    },
    {
      "name": "Basic Query Tasknode-3",
      "numeric": [
        {
          "name": "Basic Query Tasknode-4",
          "numeric": [
            {
              "name": "Basic Query Tasknode-6",
              "numeric": [],
            }
          ],
        },
        {
          "name": "Basic Query Tasknode-5",
          "numeric": [],
        }
      ],
    }
  ],
};

预期输出

{
  1: {
    2: '',
    3: {
      4: {
        6: '',
      },
      5: '',
    },
  },
};

名称-数字映射表

const numMap = {
  "1": { "trad": "Query1" },
  "2": { "trad": "Basic Query Tasknode-2" },
  "3": { "trad": "Basic Query Tasknode-3" },
  "4": { "trad": "Basic Query Tasknode-4" },
  "5": { "trad": "Basic Query Tasknode-6" },
  "6": { "trad": "Basic Query Tasknode-5" }
};

解决方案代码

因为是嵌套结构,用递归处理最直接。先做反向映射优化查询效率,再递归遍历转换:

// 先创建反向映射:名称 -> 对应的数字键
const reverseMap = Object.fromEntries(
  Object.entries(numMap).map(([num, { trad }]) => [trad, num])
);

// 递归转换函数
function transformNode(node) {
  const result = {};
  // 获取当前节点对应的数字键
  const key = reverseMap[node.name];
  // 处理子节点
  if (node.numeric.length === 0) {
    result[key] = '';
  } else {
    result[key] = {};
    node.numeric.forEach(childNode => {
      // 递归处理子节点,合并到当前结果中
      Object.assign(result[key], transformNode(childNode));
    });
  }
  return result;
}

// 执行转换
const output = transformNode(inputObj);
console.log(output);

代码说明

  1. 反向映射表:把原映射表的键值反转,这样可以通过节点的name直接拿到对应的数字,不用每次遍历整个映射表,提升效率
  2. 递归函数:
    • 每个节点先根据name找到对应的数字键
    • 如果当前节点的numeric数组为空,就给这个数字键赋值''
    • 如果有子节点,就递归处理每个子节点,把结果合并到当前节点的对象中
  3. 结构保留:通过forEach遍历numeric数组,保证子节点的顺序和原输入一致

内容的提问来源于stack exchange,提问作者Will Krimmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:58:22