JavaScript中的filter()
方法用于创建一个新的数组,其中包含通过测试的所有元素。这个方法不会改变原始数组。filter()
方法接受一个回调函数作为参数,该回调函数对数组的每个元素执行测试,并返回一个布尔值,指示该元素是否应该被包含在新数组中。
以下是filter()
方法的基本语法:
array.filter(callback(currentValue, index, array), thisArg)
-
array
:需要过滤的数组。 -
callback
:执行测试的函数,接收三个参数: -
currentValue
:当前正在处理的元素值。 -
index
(可选):当前元素的索引。 -
array
(可选):调用filter()
方法的数组。 -
thisArg
(可选):执行callback
时使用的this
值。
示例
示例 1
const numbers = [1, 2, 3, 4, 5];
const filteredNumbers = numbers.filter(number => number > 3);
console.log(filteredNumbers); // 输出: [4, 5]
示例 2
const students = [
{ name: 'Alice', age: 20, score: 90 },
{ name: 'Bob', age: 22, score: 85 },
{ name: 'Charlie', age: 21, score: 95 }
];
const highScorers = students.filter(student => student.score >= 90);
console.log(highScorers);
// 输出: [
// { name: 'Alice', age: 20, score: 90 },
// { name: 'Charlie', age: 21, score: 95 }
// ]
示例 3
const strings = ['A', '', 'B', null, undefined, 'C', ' '];
const trimmedStrings = strings.filter(s => s && s.trim());
console.log(trimmedStrings); // 输出: ['A', 'B', 'C']
建议
-
使用
filter()
方法时,确保回调函数返回一个明确的布尔值,以便正确过滤数组元素。 -
如果需要访问原始数组,可以在
filter()
方法之前创建数组的副本,以避免修改原始数据。 -
filter()
方法不会改变原始数组,这是其与其他数组方法(如map()
)的一个重要区别。