📜  调用数组上的成员函数 filter() (1)

📅  最后修改于: 2023-12-03 15:12:12.109000             🧑  作者: Mango

调用数组上的成员函数 filter()

在 JavaScript 中,数组对象有许多有用的成员函数,其中之一就是 filter()filter() 方法会创建一个新的数组,其中包含经过指定函数测试为真的所有元素。

arr.filter(callback[, thisArg])

callback 是用来测试每个元素的函数,它接收 3 个参数:当前正在处理的元素、该元素的索引和原始数组。该函数应该返回一个布尔值,指示当前元素是否应该被包含在输出的数组中。

thisArg 是可选参数,它指定了 callback 函数中的 this 的值。

下面是一个使用 filter() 方法的示例:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]

在上面的代码中,numbers 数组包含 5 个数字,filter() 方法将一个函数传递给它来测试每个元素是否为偶数。由于数字 2 和 4 是偶数,它们被包含在输出的新数组 evenNumbers 中。

filter() 方法还可以接受一个第二个参数 thisArg,让我们使用它来演示一个进一步的示例,此示例使用过滤器获取对象数组中给定属性的所有值:

const inventory = [
  { name: 'apples', quantity: 2 },
  { name: 'bananas', quantity: 0 },
  { name: 'cherries', quantity: 5 }
];

function findItemsByProperty(property, value) {
  return this.filter(item => item[property] === value);
}

const itemsWithQuantity2 = findItemsByProperty.call(inventory, 'quantity', 2);
console.log(itemsWithQuantity2); // [{name: 'apples', quantity: 2}]

在上面的代码中,findItemsByProperty() 函数返回一个新数组,其中包含具有指定属性的所有对象。call() 方法用于将执行上下文设置为 inventory 数组,这意味着 findItemsByProperty() 函数将在该上下文中运行。

总之,filter() 是一个非常有用的成员函数,可以帮助我们轻松地从数组中获取所需的元素。它可以灵活地应用于许多不同的用例,因此无论您是新手还是经验丰富的 JavaScript 开发人员,都应该掌握这个函数。