filter()与map()相似,()接受一个函数,并作用于每一个元素。不同点在于,filter()会根据返回的布尔值决定元素的去留。函数结果为true,则返回该元素;结果为false,则不返回该元素。
例如,可以利用filter()删去一个数组中全部的负数:
var arr = [-3, -2, -1, 0, 1, 2, 3];
arr.filter(function(x){
return x >= 0;
});// 结果为[0, 1, 2, 3]
例如,筛选出给定整数数组中的全部素数:
function test(arr) {
var result = arr.filter(function(x){
if (x == 1){
return false;
}//素数是大于1的整数,首先排除1
for (i = 2; i < x; i++){//根据定义,遍历2~x中的所有整数
if (x%i == 0){//判断i是否是x的因数,若存在i,则x不是素数
return false;
}
}
return true;//遍历完成后非素数全部return false,剩余的素数return true
});
return result;
}