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

JavaScript中使用forEach合并数组对象并聚合邮箱可行吗?

用forEach实现邮箱汇总需求

当然可以用forEach实现这个需求!下面我给你一步步拆解实现逻辑和代码:

首先,我们需要先按ticketId把相同工单下的邮箱分组收集起来。可以借助一个临时对象来做分组,然后通过forEach遍历原始数据,把每个成员的邮箱归类到对应的工单下:

var originalData = [
  { id: 9, ticketId: 9, member: { id: 3, email: 'ganeshpandi@gmail.com' } },
  { id: 10, ticketId: 9, member: { id: 4, email: 'braveganesh128@gmail.com' } }
];

// 临时对象,用来按ticketId分组存储邮箱
var groupedTickets = {};

originalData.forEach(item => {
  const ticketId = item.ticketId;
  const email = item.member.email;

  // 如果当前ticketId还没在分组对象里,初始化对应的结构
  if (!groupedTickets[ticketId]) {
    groupedTickets[ticketId] = {
      ticketId: ticketId,
      member: {
        email: []
      }
    };
  }

  // 把当前邮箱添加到对应ticketId的数组中
  groupedTickets[ticketId].member.email.push(email);
});

// 将分组对象转换为你需要的数组格式
var data = Object.values(groupedTickets);

console.log(data);

这段代码运行后,data的结构就和你期望的完全一致了:

[ { ticketId: 9, member: { email: ['ganeshpandi@gmail.com','braveganesh128@gmail.com'] } } ]

简单说下逻辑:

  • 用groupedTickets对象来记录每个工单的邮箱集合,键就是ticketId
  • 遍历原始数据时,检查当前工单是否已存在,不存在就创建初始结构
  • 把每个成员的邮箱push到对应工单的邮箱数组里
  • 最后用Object.values()把对象转成数组,得到最终格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:58