filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
和map()
类似,filter()
也接受一个函数。和map()
不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是false
还是true
决定去除还是保留。
例如,在Array中保留偶数,去除奇数:
var num = [1,2,3,4,5,6];
var result = nnum.filter(function(x){
return x % 2 == 0;
});
result;//[2,4,6]
所以说filter()
主要的用法就在于筛选。
回调函数
filter()
接受的回调函数其实可以有多个参数,通常我们只用第一个也就是Array中的某个元素。回调函数还可以接受另外两个参数,元素位置index和数组本身Array:
var num = [1,2,3,4,5,6];
var r = num.filter(function(element,index,self){
alert(element);
alert(index);
alert(self);
});
这里有一个例子,用filter()
可以出去数组中重复的元素:
var arr = ["apple","pear","apple","orange","pen","pencil","orange"];
var r = arr.filter(function(element,index,self){
return self.indexOf(element) === index;
});
注意 indexOf总是返回第一个出现的index。