【问题标题】:I have to return filtered object我必须返回过滤的对象
【发布时间】:2019-12-31 22:58:57
【问题描述】:

我有数组,我从复选框检查中获得。 我有一系列带有类别的对象。 我想得到一个数组filteredPeople,它只包含类别包含至少一个来自selectedClients的对象


  let selectClients = ['Web', 'Design'];

  let people = [
    { category: ['Web', 'Design'] },
    { category: ['Web'] },
    { category: ['PWA', 'Design'] },
    { category: ['Ecommerce'] },
  ];

【问题讨论】:

标签: javascript arrays object filter filtering


【解决方案1】:

您可以使用Array.prototype.someSet.prototype.has 以及filterpeople 数组中获取过滤后的列表

我使用 ES6 Set 进行 O(1) 查找:

const selectClients = ['Web', 'Design'];

const keys = new Set(selectClients);

const people = [
    { category: ['Web', 'Design'] },
    { category: ['Web'] },
    { category: ['PWA', 'Design'] },
    { category: ['Ecommerce'] },
];

const res = people.filter(({category}) => category.some(cat => keys.has(cat)));
console.log(res);

【讨论】:

    【解决方案2】:

    您可以使用filtersomeincludes

    let selectClients = ['Web', 'Design'];
    
    let people = [
      { category: ['Web', 'Design'] },
      { category: ['Web'] },
      { category: ['PWA', 'Design'] },
      { category: ['Ecommerce'] },
    ];
    
    let final = people.filter(({category})=> selectClients.some(v=>category.includes(v)))
    
    console.log(final)

    【讨论】:

    • 谢谢,这正是我所需要的。我是一名平面设计师,从开发人员开始,我刚开始使用 javascript。你推荐一些学习javascript的书籍或课程吗?
    • @JaPod MDN 是学习 js 的好来源,与你的学习伙伴一起一切顺利:) 你也应该将 Amardeep's answer 标记为正确答案,因为这比我的要好
    • @JaPod 你可以访问 JavaScript 的 SO tag info 页面,该页面有很多资源。
    猜你喜欢
    • 1970-01-01
    • 2014-09-16
    • 2018-11-24
    • 2014-05-08
    • 1970-01-01
    • 2021-04-11
    • 2014-01-13
    • 2011-12-15
    • 2017-10-07
    相关资源
    最近更新 更多