1. 过滤器 filter
1. 语法:
var new_array = arr.filter(callback(element[, index[, array]])[, thisArg])
1.callback:用来测试数组的每个元素的函数,调用时使用的参数
参数1:element
当前数组处理的元素
参数2:index 可选
正在处理数组的索引
参数3:array 可选
调用了filter的数组
参数4:thisArg
执行callback时的this的值
2.描述
filter为数组中的每个元素调用一次callback函数,并利用所有使得callback返回 true或等价于true的值的元素创建一个新数组,callback只会在已经赋值的索引上被调用.那些没有通过callback测试的元素会被跳过,不会被包含在新数组中
如果为fiter提供一个thisarg参数,则它会被作为 callback 被调用的this值.否则, callback的this值在非严格情况下将是全局对象,严格模式下 为undefied.
callback最终观察到的this值是根据通常函数看到的this值确定的
filter 不会改变原数组,它会返回过滤后的新数组
filter 遍历的元素范围在第一次调用 callbake之前就已经确定了.在调用 filter之后被添加到数组中的元素不会被filter遍历到.如果已经存在的元素改变了则传入他们的callback的值是filter遍历它们那一刻的值,被删除或从未被赋值的元素不会被遍历到
3. 实例
function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]