将值从多个对象推送到数组

时间:2018-05-04 08:32:39

标签: javascript

我想知道将值从多个对象推送到数组同时保持它们唯一的最佳方法。

例如:

let emails = [];

owners.map(data => {
    emails.push(data.mail)
})

members.map(data => {
    emails.push(data.mail)
})

console.log(emails) 

emails会填充来自每个对象的电子邮件,但它们是重复的。我知道如何过滤重复数组,但我想看到更多上述代码的选项。谢谢!

2 个答案:

答案 0 :(得分:3)

使用array spread将两个数组合并到一个数组中,并将数组map合并到一组电子邮件中。将数组转换为Set以删除重复项,然后传播回数组:

const members = [
  { mail: 'a@b.com' },
  { mail: 'c@d.net' },
];

const owners = [
  { mail: 'a@b.com' },
  { mail: 'e@f.org' },
];

const emails = [...new Set([...members, ...owners].map(data => data.mail))];

console.log(emails)

答案 1 :(得分:0)

如Ori所述,请使用Set

const emails = new Set();

owners.map(data => {
    emails.add(data.mail)
})

members.map(data => {
    emails.add(data.mail)
})

console.log(Array.from(emails)) //if you need it back to array