我想知道将值从多个对象推送到数组同时保持它们唯一的最佳方法。
例如:
let emails = [];
owners.map(data => {
emails.push(data.mail)
})
members.map(data => {
emails.push(data.mail)
})
console.log(emails)
emails
会填充来自每个对象的电子邮件,但它们是重复的。我知道如何过滤重复数组,但我想看到更多上述代码的选项。谢谢!
答案 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