JavaScript 数组过滤
■知识点
使用filterO方法可以返回数组中满足指定条件的元素。具体用法如下:
array.filter(callbackfn[, thisArg])
参数说明如下。
callbackfn:必需参数,一个接受最多3个参数的函数。对于数组中的每个元素,filter方法都会调用callbackfn函数一次。提示,回调函数语法说明可以参考20.1.2小节。
thisArg:可选参数,可在callbackfn函数中为其引用this关键字的对象。如果省略thisArg,则 undefined 将用作 this 值。
返回值是一个包含回调函数为其返回tme的所有值的新数组。如果回调函数为array的所有元素返回false,则新数组的长度为0。
■实例设计
【示例1】下面的示例演示如何使用filterO方法筛选出数组中的素数。
function f(value, index, ar) {
high = Math.floor(Math.sqrt(value)) + 1;
for (var div = 2; div <= high; div++) {
if (value % div == 0) {
return false;
}
}
return true;
}
var a = [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53];
var al = a.filter(f);
console.log (al); //31,37,41,43,47,53
【示例2】下面的示例演示如何使用filterO方法过滤掉数组中在指定范围外的元素。
var f = function(value) {
if (typeof value !== 'number') return false;
else return value >= this.min && value <= this.max;
}
var a = [6, 12, n15' 16, "the11, -12];
var obj = { min: 10, max: 20 }
var r = a.filter (f, obj);
console.log (r); //12,16
【示例3】下面的示例演示如何使用filterO方法过滤字符串中每个单词的首字母。
function f(value, index, ar) {
if (index == 0) return true; //第 1 个字母直接选择
else return ar [index - 1] === " "; //如果字母前面是空字符,则返回这个字母
}
var a = "The quick brown fox jumps over the lazy dog.";
var subset = [] .filter.call (a, f);
console.log(subset); //T,q,b,f,j,o,t,1,d
点击加载更多评论>>