包含多个值的过滤器数组



假设我有一个电子邮件数组,我想过滤一个特定的域,如:



const emails = ['test@hotmail.com', 'test@gmail.com', 'test@yahoo.com']
const excludedDomain = '@hotmail';
// This works fine
const eligibleEmails = emails.filter(email => !emails.includes(excludedDomain));
console.log(eligibleEmails);

我尝试使用一些(),但它返回一个布尔值,我需要返回一个新的过滤数组。试图混合filter()some(),但不工作。

在原来的过滤器中使用excludeDomain上的另一个过滤器。

const emails = ['test@hotmail.com', 'test@gmail.com', 'test@yahoo.com'];
const excludedDomains = ['@hotmail', '@yahoo'];
const filtered = emails.filter(email => 
excludedDomains.filter(ed => email.includes(ed)).length === 0
)
console.log(filtered); // [ 'test@gmail.com' ]

filter()some()includes()结合起来检查我们正在过滤的当前电子邮件中是否有任何excludedDomainsincludes()

const emails = ['test@hotmail.com', 'test@gmail.com', 'test@yahoo.com']
const excludedDomains = ['@hotmail', '@yahoo'];
const eligibleEmails = emails.filter(e => !excludedDomains.some(ee => e.includes(ee)));
console.log(eligibleEmails);

下面的代码片段通过excludedDomains过滤电子邮件,以返回符合条件的电子邮件。

const emails = ['test@hotmail.com', 'test@gmail.com', 'test@yahoo.com'],
excludedDomain = ['@hotmail', '@yahoo'],
eligibleEmails = emails.filter(email => excludedDomain.some(str => email.indexOf(str) > -1));
console.log(eligibleEmails);

最新更新