ES5-Array-filter

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

  • filter也要有return

语法

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的成员。

  • 注意:返回值只要是弱等于== true/false就可以了,而非返回 === true/false

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的成员。

  • 如果为 filter 提供一个 thisArg 参数,则它会被作为 callback 被调用时的 this 值。否则,callback 的 this 值在非严格模式下将是全局对象,严格模式下为 undefined。

如果数组有空位,map方法的回调函数在这个位置不会执行,会跳过数组的空位。

[1, , 3, 4, 5].filter(function (elem) {
  return (elem < 3);
})
//[1]
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值