ES5-Array-filter

2019-06-10  本文已影响0人  chrisghb

filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回(新数组长度可能会变)。用法跟map极为相似(map新数组长度不会变)。

语法

var new_array = arr.filter(callback, thisArg)

它的第一个参数是一个函数,所有数组成员依次执行该函数,返回结果true的成员组成一个新数组返回。

[1, 2, 3, 4, 5].filter(function (elem) {
  return (elem > 3);
})
// [4, 5]

上面代码将大于3的数组成员,作为一个新数组返回。

var arr = [0, 1, 'a', false];

arr.filter(Boolean)
// [1, "a"]

上面代码中,filter方法返回数组arr里面所有布尔值为true的成员。

filter方法的参数函数可以接受三个参数:当前成员,当前位置和整个数组。

[1, 2, 3, 4, 5].filter(function (elem, index, arr) {
  return index % 2 === 0;
});
// [1, 3, 5]

上面代码返回偶数位置的成员组成的新数组。

filter方法还可以接受第二个参数,用来绑定参数函数内部的this变量。

var obj = { MAX: 3 };
var myFilter = function (item) {
  if (item > this.MAX) return true;
};

var arr = [2, 8, 3, 4, 1, 3, 2, 9];
arr.filter(myFilter, obj) // [8, 4, 9]

上面代码中,过滤器myFilter内部有this变量,它可以被filter方法的第二个参数obj绑定,返回大于3的成员。

如果数组有<font color=red size=4>空位</font>,map方法的回调函数在这个位置不会执行,会跳过数组的空位。

[1, , 3, 4, 5].filter(function (elem) {
  return (elem < 3);
})
//[1]
上一篇下一篇

猜你喜欢

热点阅读