javascript - 比较两个数组并在正则表达式后返回唯一值

标签 javascript arrays regex underscore.js

我有两个数组。一个包含电子邮件列表,另一个包含匹配的字符串列表,应该被拒绝。

array1 = [ 'appstore@myntra.com',
  'life@updates.cricinfo.com',
  'pqr@gmail.com',
  'noreply-de9ae870@plus.google.com',
  'updates-24997849@shtyle.fm',
  'whatsup@gmail.com',
  'some@relatas.com',
  'smqwe@gmail.com' ]

array 2 = [ /calendar-notification/i,
  /feedproxy/i,
  /techgig/i,
  /team/i,
  /blog/i,
  /info/i,
  /support/i,
  /admin/i,
  /hello/i,
  /no-reply/i,
  /noreply/i,
  /reply/i,
  /help/i,
  /mailer-daemon/i,
  /googlemail.com/i,
  /mail-noreply/i,
  /alert/i,
  /calendar-notification/i,
  /eBay/i,
  /flipkartletters/i,
  /pinterest/i,
  /dobambam.com/i,
  /notify/i,
  /offers/i,
  /iicicibank/i,
  /indiatimes/i,
  /info@relatas.in/i,
  /facebookmail/i,
  /message/i,
  /facebookmail.com/i,
  /notification/i,
  /youcanreply/i,
  /jobs/i,
  /news/i,
  /linkedin/i,
  /list/i ]

array2 包含我要拒绝的所有无效电子邮件。

我如何比较这两个数组并从 array1 中删除无效的电子邮件,以便我得到

array3 = [ 'appstore@myntra.com',
  'life@updates.cricinfo.com',
  'pqr@gmail.com',
  'whatsup@gmail.com',
  'some@relatas.com',
  'smqwe@gmail.com' ]

最佳答案

您基本上可以过滤它们:

var newArray = array1.filter(function (elem) {
    var ok = true
    array2.forEach(function (tester) {
        if (tester.test(elem)) {
            ok = false;
        }
    });
    return ok
});

更新

正如@torazaburo 所建议的,使用 some 我们可以得到一个更简洁的解决方案:

var newArray = array1.filter(function (elem) {
    return !array2.some(function (tester) {
        return tester.test(elem)
    });
});

关于javascript - 比较两个数组并在正则表达式后返回唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35917447/

相关文章:

javascript - 使用 TinyMCE 插件的默认图像按钮

javascript - jQuery Ajax : re-executing function on success, 当函数事先未知时

javascript - 使用 Blazor(客户端)按像素绘制 HTML Canvas 图像的有效方法

java - java中的Unicode到String但很棘手

实时服务器上 XMLHttpRequest 中的 Javascript 变量重置为空

java - 我如何优化下面的代码,以便它可以接受任何数组大小并给我结果

arrays - 处理多种类型和数组时如何编写 "good"Julia代码(多重分派(dispatch))

regex - Sed:仅当标记与第一个字符串匹配时才转换为 xml 标记

regex - 使用文件夹名称重命名文件名但保持数字相同

arrays - Angularjs ng-repeat 数组 - 重复值