繁体   English   中英

具有多个值的过滤器数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM