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
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23119.html