定义和用法
filter用于对数组进行过滤。
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
使用filter()的注意事项:
一:回调函数
filter()方法接收的回调函数,可以有多个参数。通常我们仅使用第一个参数,表示数组的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身。
二:原数组不变
filter() 方法不会修改原始数组,而是返回一个新的筛选后的数组。因此,在使用该方法后,应该使用新的数组来存储结果,或者将结果直接赋给变量,而不是期望原数组被修改。
三;处理空数组
filter() 方法不会对空数组进行检测。如果原始数组为空(即没有任何元素),那么经过过滤后的结果也将是一个空数组。因此,在使用 filter() 方法之前,最好先检查数组是否为空,以避免不必要的操作。
四:隐式类型转换
使用 filter() 方法时,要注意 JavaScript 的隐式类型转换规则。回调函数中的条件表达式可能导致意外的结果,例如字符串和数字之间的比较。确保在进行条件判断时,类型一致性与预期一致。
例子:
返回数组arrNum中所有大于等于2的元素。
const arrNum = [1, 2, 3, 4, 5, 6]
const newArrNum = arrNum.filter(item => {
return item >= 2
})
console.log(newArrNum) // [2,3,4,5,6]
使用filter去除Array的重复元素:
const arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry']
const rnewArr = arr.filter(function(element, index, self) {
return self.indexOf(element) === index
})
console.log(rnewArr.toString())// apple,strawberry,banana,pear,orange
对数组进行过滤,筛选出年龄大于 18岁的数据
const arrNum = [
{
name: 'tom1',
age: 24
},
{
name: 'tom2',
age: 33
},
{
name: 'tom3',
age: 17
},
{
name: 'tom4',
age: 13
}
]
const res = arrNum.filter(item => item.age > 18)
console.log(res) // [{name: 'tom1',age: 24},{name: 'tom2',age: 22}]
console.log(arrNum)