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

如何在JavaScript中合并子数组内的对象以得到单个包含多个对象的数组

解决嵌套数组中对象合并的问题

你遇到的问题很明确:需要把每个子数组里的多个单键对象合并成一个完整对象,而不是把所有对象平铺成一维数组。之前用[].concat.apply([], array)的方式只是做了数组扁平化,这和你的需求不符,下面给你几种可行的解决方案:

核心思路

遍历外层数组的每个子数组,将子数组内的所有小对象合并为一个包含所有键值对的对象,最终组成新的数组。

方法1:使用Object.assign + 展开运算符

这是比较简洁的写法,Object.assign可以接收多个对象参数,把它们的键值对合并到目标对象中:

const originalArray = [ 
  [ { "col0": "Glasses" }, { "col1": "Milky Glasses" }, { "col2": "292516467012796941" } ], 
  [ { "col0": "Knives" }, { "col1": "Milky Knives" }, { "col2": "292516484536599049" } ], 
  [ { "col0": "Forks" }, { "col1": "Milky Forks" }, { "col2": "292516497196057096" } ], 
  [ { "col0": "Gloves" }, { "col1": "Kewl Gloves" }, { "col2": "292534063457108493" } ], 
  [ { "col0": "Wrench" }, { "col1": "Kewl Wrench" }, { "col2": "292534088244396552" } ], 
  [ { "col0": "Monkey snake" }, { "col1": "Kewl Monkey snake" }, { "col2": "292534109863936521" } ] 
];

const finalArray = originalArray.map(subArr => Object.assign({}, ...subArr));

方法2:使用reduce进行合并

如果需要更灵活的处理(比如子数组长度不固定的情况),reduce是更通用的选择:

const finalArray = originalArray.map(subArr => 
  subArr.reduce((mergedObj, currentObj) => {
    return { ...mergedObj, ...currentObj };
  }, {})
);

方法3:手动展开子数组对象(适合固定长度的子数组)

如果你的子数组长度确定都是3个对象,也可以直接手动展开合并:

const finalArray = originalArray.map(([obj0, obj1, obj2]) => ({ ...obj0, ...obj1, ...obj2 }));

验证结果

执行上述代码后,finalArray会完全符合你的预期:

[
  {"col0":"Glasses","col1":"Milky Glasses","col2":"292516467012796941"},
  {"col0":"Knives","col1":"Milky Knives","col2":"292516484536599049"},
  {"col0":"Forks","col1":"Milky Forks","col2":"292516497196057096"},
  {"col0":"Gloves","col1":"Kewl Gloves","col2":"292534063457108493"},
  {"col0":"Wrench","col1":"Kewl Wrench","col2":"292534088244396552"},
  {"col0":"Monkey snake","col1":"Kewl Monkey snake","col2":"292534109863936521"}
]

为什么之前的方法不行?

[].concat.apply([], originalArray)的作用是扁平化嵌套数组,它会把所有子数组里的元素(也就是那些单键对象)全部提取出来放到一个一维数组里,这和你需要的"合并对象"是完全不同的操作,所以得到的结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:52:32