【问题标题】:Is there any way how to find elements of array by multiple values? [duplicate]有没有办法通过多个值查找数组元素? [复制]
【发布时间】:2019-07-25 09:01:19
【问题描述】:

我有一个数组:

people = [
  {name: a, group: 1},
  {name: b, group: 2},
  {name: c, group: 3},
  {name: d, group: 2},
  {name: e, group: 3},
  {name: f, group: 1},
  {name: g, group: 1},
];

我需要找到第 2 组和第 3 组中的所有人。 期望的输出:

filteredPeople = [
  {name: b, group: 2},
  {name: c, group: 3},
  {name: d, group: 2},
  {name: e, group: 3},
];

也可能是其他组(用于搜索的组可能会改变)。

我该怎么做?

【问题讨论】:

标签: javascript arrays object filter javascript-objects


【解决方案1】:

您可以使用.filter().includes() 方法来获得所需的输出:

const data = [
  {name: 'a', group: 1}, {name: 'b', group: 2}, {name: 'c', group: 3},
  {name: 'd', group: 2}, {name: 'e', group: 3}, {name: 'f', group: 1},
  {name: 'g', group: 1}
];

const groups = [2, 3];

const result = data.filter(({ group }) => groups.includes(group));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    【解决方案2】:

    filterincludes 在这里完成工作。我们使用其余运算符(这为我们提供了一个可以应用includes 的数组)。因此,您可以将任意数量的组放入函数调用中,以便在过滤时灵活。

    let people = [{name: "a",group:1},{name: "b",group:2},{name: "c",group:3},{name:"d",group:2},{name:"e",group:3},{name:"f",group:1},{name:"g",group:1}];
    
    let filterGroups = (arr, ...groups) => arr.filter(o => groups.includes(o.group));
    
    console.log(filterGroups(people, 2, 3));

    【讨论】:

      【解决方案3】:

      使用Array.prototype.filter() 和表达式2 === group || group === 3

      const data = [{name: 'a', group: 1}, {name: 'b', group: 2}, {name: 'c', group: 3}, {name: 'd', group: 2}, {name: 'e', group: 3}, {name: 'f', group: 1}, {name: 'g', group: 1}];
      const result = data.filter(({ group }) => group === 2 || group === 3);
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-29
        • 2020-07-26
        • 1970-01-01
        • 2019-09-28
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多