JavaScript中的filter
函数用于过滤数组中符合特定条件的元素,并返回一个由满足条件的元素组成的新数组。其基本用法如下:
array.filter(callback(currentValue, index, array), thisArg)
参数说明:
-
callback
:一个必需参数,是一个函数,该函数会被数组的每个元素调用一次。这个函数接收三个参数: -
currentValue
:当前正在处理的元素。 -
index
(可选):当前正在处理的元素的索引。 -
array
(可选):callback
被调用的数组。 -
thisArg
(可选):执行callback
时使用的this
值。
返回值:
filter
函数返回一个新数组,包含所有通过callback
函数测试为true
的元素。原始数组不会被改变。
示例:
const numbers = [1, 2, 3, 4, 5];
const filteredNumbers = numbers.filter(function(number) {
return number > 3;
});
console.log(filteredNumbers); // 输出: [4, 5]
在这个例子中,filter
方法接收一个匿名函数作为参数,该函数检查每个数字是否大于3。只有大于3的数字才会被包含在返回的新数组中。
更多示例:
// 过滤出数组中的偶数
const arr = [1, 2, 3, 4, 5, 6];
const evenNumbers = arr.filter(x => x % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4, 6]
// 过滤掉数组中的空字符串和null
const arrWithEmptyStrings = ['A', '', 'B', null, undefined, 'C', ' '];
const filteredArr = arrWithEmptyStrings.filter(s => s && s.trim());
console.log(filteredArr); // 输出: ['A', 'B', 'C']
// 过滤掉对象数组中不符合条件的对象
const arrOfObjects = [
{ "id": 2, "key": "mobile", "Configable": false, "isRequired": true },
{ "id": 4, "key": "address", "Configable": false, "isRequired": true },
{ "id": 6, "key": "faceInfo", "Configable": true, "isRequired": true }
];
const filteredObjects = arrOfObjects.filter(item => item.key === "faceInfo");
console.log(filteredObjects); // 输出: [{ "id": 6, "key": "faceInfo", "Configable": true, "isRequired": true }]
通过这些示例,你可以看到filter
函数在处理不同类型的数据和不同过滤条件时的应用。