首页 > JavaScript 阅读:10,249

JS filter()方法:根据指定条件过滤数组元素

JavaScript filter() 方法可以返回数组中满足指定条件的元素。具体用法如下:

array.filter(callbackfn[, thisArg]);

参数说明:
  • array:必需参数,一个数组对象。
  • callbackfn:必需参数,一个接收最多三个参数的函数。对于数组中的每个元素,filter 方法都会调用 callbackfn 函数一次。
  • thisArg:可选参数,可在 callbackfn 函数中为其用 this 关键字的对象。如果省略 thisArg,则 undefined 将用作 this 值。

返回值是一个包含回调函数为其返回 true 的所有值得新数组。如果回调函数为 array 的所有元素返回 false,则新数组的长度为 0。

对于数组中的每个元素,filter 方法都会调用 callbackfn 函数一次(采用升序索引顺序)。不为数组中缺少的元素调用该回调函数。回调函数的用法与 map 相同。

除了数组对象之外,filter 方法可由具有 length 属性,且具有已按数字编制索引的属性名的任何对象使用。

示例1

下面示例演示如何使用 filter 方法筛选出数组中的素数。
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,57,49,51,53];
var a1 = a.filter(f);
console.log(a1);  //31,37,41,43,47,53

示例2

下面示例演示如何使用 filter 方法过滤掉数组中在指定范围外的元素。
var f = function (value) {
    if (typeof value !== 'number'){
        return false;
    } else {
        return value >= this.min && value <= this.max;
    }
}
var a = [6, 12, "15", 16, "the", -12];
var obj = {min : 10, max : 20};
var r = a.filter(f, obj);
console.log(r);  //12,16

示例3

下面示例演示如何使用 filter 方法过滤字符串中每个单词的首字母。
function f (value, index, ar) {
    if (index == 0) {
        return true;
    } 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,l,d

关注微信公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由C语言中文网站长运营,每日更新,坚持原创,敢说真话,凡事有态度。

魏雪原二维码
微信扫描二维码关注公众号