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

如何将两个数组对应位置的对象合并后生成新数组

两个对象数组按索引合并的最优实现方案

实现思路

  • 取两个数组的最大长度作为结果数组的长度,确保长数组超出短数组的元素可以完整保留
  • 遍历每个索引位置,将两个数组对应索引的对象合并,无值的位置默认用空对象占位避免运行报错
  • 合并时若存在同名属性,后序传入的对象属性会覆盖前序的,可按需调整合并顺序

最简实现(ES6+)

const mergeArrays = (arr1, arr2) => 
  Array.from({ length: Math.max(arr1.length, arr2.length) }, (_, i) => ({
    ...(arr1[i] || {}),
    ...(arr2[i] || {})
  }))

提示:如果两个数组同索引对象存在同名属性,现有写法会优先保留第二个数组的属性值,想要调整优先级只要交换两个对象的展开顺序即可。

测试验证

// 示例数据
const a = [{a:1, b:2, c:3}, {d:1, e:4, f:2}]
const b = [{m:1, n:2, o:4}, {r:1,s:3,u:5}, {k:1,j:4,f:8}]

const z = mergeArrays(a, b)
// 输出结果和要求的目标数组完全一致:
// [{a:1, b:2, c:3, m:1, n:2, o:4}, {d:1, e:4, f:2, r:1,s:3,u:5}, {k:1,j:4,f:8}]

兼容旧环境写法(不支持展开运算符)

const mergeArrays = function(arr1, arr2) {
  var maxLen = Math.max(arr1.length, arr2.length)
  var result = []
  for (var i = 0; i < maxLen; i++) {
    result.push(Object.assign({}, arr1[i] || {}, arr2[i] || {}))
  }
  return result
}

内容的提问来源于stack exchange,提问作者Lutaaya Huzaifah Idris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:00:01