位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 数组过滤

提问人:刘团圆发布时间:2020-11-25

■知识点

使用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

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部