一种用多个数字过滤列表的干净方法

时间:2020-06-03 17:19:48

标签: javascript

可以说我有一个如下所示的JSON文件。什么是按年龄过滤列表的最干净方法,以便我也可以针对多个年龄进行过滤。我不想使用or运算符,因为在较大的过滤器示例中,这将是很长的逻辑运算。

// DON'T
return this.users.filter((user) => {
  return user.age=== 17 || user.age=== 20 || ....
});
{
  "id": 1,
  "name": "Nick",
  "age": 17
},
{
  "id": 2,
  "name": "Bob",
  "age": 20
},
{
  "id": 3,
  "name": "Ray",
  "age": 19
}

3 个答案:

答案 0 :(得分:3)

您可以为此使用Array.prototype.includes

return this.users.filter(user => [17, 20, 22, 26, 35, 36, 80].includes(user.age));

答案 1 :(得分:1)

NULL

答案 2 :(得分:1)

您可以使用Array.prototype.includes过滤数据,为allowedAges创建一个数组,然后根据allowedAges.inclues(user.age)进行过滤

示例

const userData = [{
  "id": 1,
  "name": "Nick",
  "age": 17
},
{
  "id": 2,
  "name": "Bob",
  "age": 20
},
{
  "id": 3,
  "name": "Ray",
  "age": 19
}]

const allowedAges = [17,20]

const filteredData = userData.filter(user => allowedAges.includes(user.age));

console.log(filteredData)