[英]Filter array with multiple values
假设我有一组电子邮件,我想过滤一个特定的域,例如:
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);
我尝试使用some() ,但它返回一个布尔值,我需要返回一个新的过滤数组。 试图混合filter()
和some()
但没有用。
将filter()
与some()
和includes()
结合以检查我们正在过滤的当前电子邮件中是否有任何excludedDomains
includes()
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);
只需在原始过滤器内的 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' ]
以下代码段按 excludeDomains 过滤电子邮件以返回符合条件的电子邮件。
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.