JS中的filter()
JS中的filter()
一、语法
array.filter(function(currentValue, indedx, arr), thisValue)
二、参数描述
currentValue:必须。当前元素的值;
index:可选。当前元素的索引值;
arr:可选。当前元素属于的数组对象;
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"。
三、注意
- filter用于对数组进行过滤。
- 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
- 注意:filter()不会对空数组进行检测、不会改变原始数组
四、实例
原始数组
var arr = [3,9,4,3,6,0,9];
1. 返回数组nums中所有大于5的元素。
function max5(arr){
return arr.filter((x) => x > 5});
}
//ES6语法:箭头函数(参数1, 参数2 ...) => { 函数体 }
//如果有且仅有 1 个形参,则()可以省略
//如果函数体内有且仅有 1 条语句,则{}可以省略,但前提是,这条语句必须是 return 语句。
2. 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
function remove(arr, item) {
return arr.filter(val => val != item);
}
3. 数组去重
var r = arr.filter(function (element, index, self) {
return self.indexOf(element) == index;
});
去除重复元素依靠的是indexOf
总是返回第一个元素的位置,后续的重复元素位置与indexOf
返回的位置不相等,因此被filter
滤掉了。
4. 在数组 arr 中,查找值与 item 相等的元素出现的所有位置
输入
['a','b','c','d','e','f','a','b','c'] 'a'
输出
[0, 6]
function findAllOccurrences(arr, target) {
var res=[];
arr.filter(function(ele,index){
return (ele===target)&&res.push(index);
})
return res;
}
五、高级应用
待续