如何在JavaScript中使用filter()数组方法

来自菜鸟教程
跳转至:导航、​搜索

介绍

filter() Array 方法创建一个新数组,其中包含来自现有数组的给定条件下的元素。

在本文中,您将了解 filter() 数组方法。

先决条件

如果您想继续阅读本文,您将需要:

在数字数组上使用 filter()

filter() 的语法类似于:

var newArray = array.filter(function(item) {
  return condition;
});

item 参数是对数组中当前元素的引用,因为 filter() 会根据 condition 检查它。 在对象的情况下,这对于访问属性很有用。

如果当前的 item 通过了 condition,它将返回到新数组。

考虑这个数字数组示例:

var numbers = [1, 3, 6, 8, 11];

然后应用 filter() 以返回所有大于 7 的数字:

var greaterThanSeven = numbers.filter(function(number) {
  return number > 7;
});

console.log(greaterThanSeven);

此代码将生成一个新的过滤数组:

output[8, 11]

返回具有两个大于 7 的值的数组。

在对象数组上使用 filter()

filter() 的一个常见用例是通过对象的属性来处理对象数组。

考虑以下 creature 对象的示例数组:

var creatures = [
  {name: "Shark", habitat: "Ocean"},
  {name: "Whale", habitat: "Ocean"},
  {name: "Lion", habitat: "Savanna"},
  {name: "Monkey", habitat: "Jungle"}
];

然后应用 filter() 以返回所有 habitat 等于 Ocean 的生物:

var aquaticCreatures =  creatures.filter(function(creature) {
  return creature.habitat == "Ocean";
});

console.log(aquaticCreatures);

此代码将生成一个新的过滤数组:

Output[ {name: "Shark", habitat: "Ocean"}, {name: "Whale", habitat: "Ocean"} ]

返回一个包含在“海洋”中有栖息地的两个生物的数组。

结论

在本文中,您了解了 filter() 数组方法。

有关更多详细信息,请参阅有关 filter() MDN 参考。

Filter 只是 JavaScript 中数组的几种迭代方法之一,请阅读 如何在 JavaScript 中使用数组迭代方法 了解其他方法,如 map()reduce()