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

如何将数组中同stage键值的对象content合并至对应数组

按Stage归集Content值的实现方案

需求说明

将数组中stage键值相同(仅AT_CALLCENTER或AT_SITE)的对象,其content值合并到对应数组中,最终生成以stage为键、对应content数组为值的对象。

原始输入数组

[
  { candidateId: 'DEMO-000031', content: 'test', stage: 'AT_CALLCENTER' },
  { candidateId: 'DEMO-000031', content: 'test', stage: 'AT_CALLCENTER' },
  { candidateId: 'DEMO-000031', content: 'Hello Alex', stage: 'AT_CALLCENTER' },
  { candidateId: 'DEMO-000031', content: 'test', stage: 'AT_CALLCENTER' },
  { candidateId: 'DEMO-000031', content: 'ttests', stage: 'AT_SITE' },
  { candidateId: 'DEMO-000031', content: 'test', stage: 'AT_SITE' },
  { candidateId: 'DEMO-000031', content: 'testest', stage: 'AT_SITE' },
  { candidateId: 'DEMO-000031', content: 'test', stage: 'AT_SITE' }
]

预期输出

{
  "AT_CALLCENTER": ["test", "test", "Hello Alex", "test"],
  "AT_SITE": ["ttests", "test", "testest", "test"]
}

实现代码

使用Array.prototype.reduce()完成归并,这是处理此类分组需求的高效方式:

const input = [/* 上述原始数组 */];

const groupedContent = input.reduce((acc, item) => {
  // 初始化对应stage的数组(如果不存在)
  acc[item.stage] ??= [];
  // 推入当前content
  acc[item.stage].push(item.content);
  return acc;
}, {});

console.log(groupedContent);

代码说明

  • reduce方法:遍历数组,以空对象为初始值逐步构建结果。
  • 空值合并赋值运算符??=:简化了“不存在则初始化空数组”的逻辑,比传统if判断更简洁。
  • 时间复杂度:O(n),仅需遍历一次数组,性能最优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:45:55