为了账号安全,请及时绑定邮箱和手机立即绑定

ES6 为多个数组运行不同的函数

ES6 为多个数组运行不同的函数

HUH函数 2021-09-30 15:18:15
我有一个sendEmail函数需要根据用户在数组中的位置发送不同的电子邮件。例如,我有以下数据:[   { download: 'Release sale. 50% off!',    user: 'test1@gmail.com' },  { download: 'Release sale. 50% off!',    user: 'test2@gmail.com' },  { download: 'Release sale. 50% off!',    user: 'test3@gmail.com' },  { download: 'Release sale. 50% off!',    user: 'test4@gmail.com' } ][   { download: 'Test',    user: 'test5@gmail.com'   } ]对于每个数组,我需要累积所有user电子邮件和download字符串并运行以下函数:await transporter.sendMail({    from: '"Test" <noreply@test.com>',    to: [email array here],    subject: "Here is your file",    text: `Here is your download: ${download}`  })
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

您可以将数组组合成一个数组并对其进行迭代,sendMail()为每个元素调用您的方法。


const users1 = [{

    download: 'Release sale. 50% off!',

    user: 'test1@gmail.com'

  },

  {

    download: 'Release sale. 50% off!',

    user: 'test2@gmail.com'

  },

  {

    download: 'Release sale. 50% off!',

    user: 'test3@gmail.com'

  },

  {

    download: 'Release sale. 50% off!',

    user: 'test4@gmail.com'

  }

];


const users2 = [{

  download: 'Test',

  user: 'test5@gmail.com'

}];


const allUsers = [...users1, ...users2];


const groupedUsers = allUsers.reduce((acc, u) => {

  const group = acc.find(x => x.download === u.download);


  if (group) {

    group.users.push(u.user);

    return acc;

  }


  return [...acc, {

    download: u.download,

    users: [u.user]

  }];

}, []);


console.log(groupedUsers)

使用groupedUsers上面的列表,您应该能够根据download属性向用户组发送电子邮件。


groupedUsers.forEach(async group => {

  await transporter.sendMail({

    from: '"Test" <noreply@test.com>',

    to: group.users,

    subject: "Here is your file",

    text: `Here is your download: ${group.download}`

  });

});

我使用了 spread ( ...) 运算符来组合数组,但concat()如果您愿意,也可以使用。const allUsers = users1.concat(users2);


查看完整回答
反对 回复 2021-09-30
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号