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

如何合并JavaScript数组中ts字段值相同的多个对象

错误原因

原有实现直接将全量数组对象展开合并到单个对象中,相同的ts属性会被后续元素覆盖,最终仅保留最后一个ts对应的合并结果,不符合按ts分组合并的需求。

正确实现

先按ts字段分组,对同组的对象做属性合并,最终将分组结果转为数组即可,示例代码如下:

const mergeArrayOfObjs = (arr) => {
  const groupMap = new Map();
  arr.forEach(item => {
    const exist = groupMap.get(item.ts);
    groupMap.set(item.ts, exist ? {...exist, ...item} : {...item});
  });
  return Array.from(groupMap.values());
};

const result = mergeArrayOfObjs(array);
console.log(result);

如果追求更简洁的写法,也可以用reduce实现:

const result = Object.values(array.reduce((acc, cur) => {
  acc[cur.ts] = {...acc[cur.ts] || {}, ...cur};
  return acc;
}, {}));
输出结果

两种写法最终输出都符合预期:

[
  { ts: 1596232800, v1: 1, b2: 10, c3: 20 },
  { ts: 1596232860, v1: 2, b2: 11, c3: 21 },
  { ts: 1596232920, v1: 3, b2: 12, c3: 22 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:18:04