我将这些数据放入响应中

var data=[ { id: 9,
    ticketId: 9,
    member: { id: 3, email: '[email protected]' } },
  { id: 10,
    ticketId: 9,
    member: { id: 4, email: '[email protected]' } } ];


我想将所有邮件发送到所有会员电子邮件,

我的预期结果是:

var data=[ {
    ticketId: 9,
    member: {  email: ['[email protected]','[email protected]'] } },
   ];


这个结果是否可能在foreach中?

最佳答案

您可以使用array#reduce在新的对象累加器中基于ticketId对数组对象进行分组,然后使用Object.values()提取每个键的所有值。



var data = [{ id: 9, ticketId: 9, member: { id: 3, email: '[email protected]' } }, { id: 10, ticketId: 9, member: { id: 4, email: '[email protected]'}}],
    result = Object.values(data.reduce((r, {ticketId, member: {email}}) => {
      r[ticketId] = r[ticketId] || {ticketId, member:{email: []}};
      r[ticketId].member.email.push(email);
      return r;
    },{}));
console.log(result);

10-04 16:42