filter将数组中的某些元素过滤掉,返回剩下的元素。
和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
例子:
(1)保留偶数
var arr=[2,3,4,4,6];
var result=arr.filter(function(s){
return s%2==0;
});
输出结果为
2018-03-31 23-15-28屏幕截图.png
(2)把一个Array中的空字符串删掉
var arr=["a","",null,undefined,"c"];
var str=arr.filter(function(s){
return s && s.trim();
});
结果为:
2018-03-31 23-19-17屏幕截图.png
回调函数
filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身。
var arr=['a','b','c'];
var r=arr.filter(function(element,index,self){
console.log("element="+element);
console.log("index="+index);
console.log("self="+self);
});
结果为
2018-03-31 23-24-09屏幕截图.png
利用filter,可以巧妙地去除Array的重复元素:
var r, arr=['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r=arr.filter(function(element,index,self){
return self.indexOf(element)===index;
});
结果为:
2018-03-31 23-28-56屏幕截图.png
去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。
网友评论