JavaScript从数组过滤数据

时间:2018-08-11 08:24:14

标签: javascript filtering

我有3个数组:名字,姓氏,电子邮件:

var names = firstname.map(a => a.firstname);

    var uniqueNames = [];
    $.each(names, function(i, el){
        if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
    });

    var lastnames = lastname.map(a => a.lastname);


    var uniqueLastNames = [];
    $.each(lastnames, function(i, el){
        if($.inArray(el, uniqueLastNames) === -1) uniqueLastNames.push(el);
    });

    var emails = email.map(a => a.email);

并且我正在尝试按名字过滤电子邮件数组(后跟名字的方式):

var result = emails.filter(email => !uniqueNames.find(name => email.includes(name)));

在使用示例时可以正常工作

var emails = ['sAdam1@green.com','lessio@gmail.com'];

电子邮件:sAdam1@green.com被删除。很好的结果,但是当我使用时: var emails = email.map(a => a.email);不起作用

console.log(emails);给出的结果类似于字符串数组:[“ mail@example.com”,“ mail2@example.com”,...]

原始数据: 电子邮件:john.doe @ example.com,doe @ hotmail.com,j.doe @ gmail.com,dennis @ gmail.com,cow @ boy.com 名:约翰,丹尼斯,爱丽丝 姓:doe

和结果邮件数组:cow@boy.com。休息到垃圾桶。

期待获得帮助。预先感谢

1 个答案:

答案 0 :(得分:2)

您可以通过检查不需要的名称数组来进行过滤。

var emails = ['john.doe@example.com', 'doe@hotmail.com', 'j.doe@gmail.com', 'dennis@gmail.com', 'cow@boy.com'],
    firstnames = ['john', 'dennis', 'alice'],
    lastnames = ['doe'],
    names = [...firstnames, ...lastnames],
    filtered = emails.filter(e => !names.some(n => e.includes(n)));
    
console.log(filtered);