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

JavaScript中如何逐个合并多个数组?数组对象合并失败求助

问题分析与解决方法

错误原因

  1. Object.assign的误用:Object.assign是用于合并对象的方法,当传入数组时,数组会被当作类对象处理——它会把第二个数组的元素(以索引为键)覆盖第一个数组对应索引的元素,所以你得到的answer其实是triperrors的内容,而非预期的合并结果。
  2. 重复键的合法性问题:你期望的结果中每个对象包含两个equipId键,这在JavaScript中是不合法的——对象内重复的键会被后定义的覆盖,实际运行时只会保留最后一个equipId的值。

正确解决方案

方案一:修改键名,合并对应位置对象

如果需要区分两个来源的equipId,可以给它们设置不同的键名,通过map遍历数组,合并对应位置的对象:

const heatstatus = [
    { equipId: "1" },
    { equipId: "2" },
    { equipId: "3" }
];

const triperrors = [
    { equipId: "11" },
    { equipId: "22" },
    { equipId: "33" }
];

const answer = heatstatus.map((item, index) => ({
    heatEquipId: item.equipId,
    tripEquipId: triperrors[index].equipId
}));

输出结果:

[
  { heatEquipId: '1', tripEquipId: '11' },
  { heatEquipId: '2', tripEquipId: '22' },
  { heatEquipId: '3', tripEquipId: '33' }
]

方案二:将相同键的值合并为数组

如果需要保留equipId作为键,可以把两个来源的值合并成数组:

const answer = heatstatus.map((item, index) => ({
    equipId: [item.equipId, triperrors[index].equipId]
}));

输出结果:

[
  { equipId: ['1', '11'] },
  { equipId: ['2', '22'] },
  { equipId: ['3', '33'] }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:25:40