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

如何在JavaScript中合并嵌套对象内的ids数组?

合并对象中各Car对应的ids数组

原始输入结构

{
   "Car1":{
      "139":{
         "count":3,
         "ids":[
            "336",
            "347",
            "453"
         ]
      },
      "140":{
         "count":1,
         "ids":[
            "338"
         ]
      }
   },
   "Car2":{
      "157":{
         "count":1,
         "ids":[
            "4449"
         ]
      }
   }
}

期望输出结构

{
   "Car1":{
      "ids":[
         "336",
         "347",
         "453",
         "338"
      ]
   },
   "Car2":{
      "ids":[
         "4449"
      ]
   }
}

实现函数

通过遍历对象的每个Car项,再遍历其下的所有子对象,将每个子对象的ids数组合并,最终构建目标结构:

function mergeCarIds(originalObj) {
  const result = {};
  // 遍历每个Car属性
  for (const carKey in originalObj) {
    if (originalObj.hasOwnProperty(carKey)) {
      const carData = originalObj[carKey];
      const mergedIds = [];
      // 遍历当前Car下的所有子对象,收集ids
      for (const subKey in carData) {
        if (carData.hasOwnProperty(subKey)) {
          mergedIds.push(...carData[subKey].ids);
        }
      }
      result[carKey] = { ids: mergedIds };
    }
  }
  return result;
}

// 测试示例
const input = {
  "Car1":{
    "139":{ "count":3, "ids":["336","347","453"] },
    "140":{ "count":1, "ids":["338"] }
  },
  "Car2":{
    "157":{ "count":1, "ids":["4449"] }
  }
};

console.log(mergeCarIds(input));

代码说明

  • 外层循环遍历每个Car节点,确保只处理对象自身属性;
  • 内层循环遍历当前Car下的所有子对象,用扩展运算符...将子对象的ids元素合并到统一数组;
  • 为每个Car生成仅包含合并后ids的对象,存入结果对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:15:45