【问题标题】:JavaScript filter data from arrayJavaScript 过滤数组中的数据
【发布时间】:2018-08-11 08:24:14
【问题描述】:

我有 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 名字:约翰、丹尼斯、爱丽丝 姓氏:母狗

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

期待帮助。提前致谢

【问题讨论】:

  • 请添加原始数据和想要的结果。
  • 除非您给我所需的结果格式和形式,否则我无法给出答案。
  • 我使用 Laravel Eloquent 从 DB 中的邮件表(列:名字、姓氏、电子邮件)中获取数据,并将它们像名称、姓氏、电子邮件一样加载到 javascript 中(它们就像数组的对象) 所以我得到了地图的价值。结果,我有 3 个数据数组,例如 names = ["john","dennis","nina"],与姓氏和邮件相同。我怎样才能给你更好的信息?
  • 如果您将带有对象的真实原始数组添加到问题中,它会更容易。要获得唯一值,您可以采用不同的方法,但除非您不添加任何内容,否则无法为其编写一些代码。甚至我的回答看起来都是小问题,这可能无法解决整个问题。
  • 我明白了,所以我会添加更多信息,因为我正在尝试您的代码和其他解决方案,但它不起作用。给我一点时间

标签: javascript filtering


【解决方案1】:

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

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2022-08-17
    • 2020-02-24
    • 2018-03-22
    相关资源
    最近更新 更多