Array filter()
filter 直译 过滤器 显然起到的效果是过滤、筛选;
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意
- filter() 不会对空数组进行检测。
2.filter() 不会改变原始数组.
语法
array.filter(function(currentValue,index,arr), thisValue)
实例应用及参数分析
基本用法
//定义一个数组
var ages = [32, 33, 16, 40];
//定义一个函数 返回大于18的元素
function checkAdult(age) {
return age >= 18;
}
//返回原数组大于18的元素组成新的数组
var newAges = ages.filter(checkAdult);
参数分析
var ages = [32, 33, 16, 40];
var newAges= ages .filter((item,index,ages) => { 逻辑运算 return boolean; },thisVue);
//item 要检测的数组的当前元素 好比 遍历中的一个元素; 必选参数
//index 当前元素在原数组中的下标索引 可选参数
//ages 调用filter的当前数组,用于作用域的问题,可能需要传入; 可选参数
//return boolean类型的数组;
//filter的参数2 thisVue ; 作用域this 严格模式下filter的回调函数中的this = thisVue传入的值,也是因作用域的问题,选择性传入;
/*官方所说:如果为 `filter` 提供一个 `thisArg` 参数,则它会被作为 `callback` 被调用时的 `this` 值。
否则,`callback` 的 `this` 值在非严格模式下将是全局对象,严格模式下为 `undefined`。
`callback` 函数最终观察到的 `this` 值是根据[通常函数所看到的 "this"的规则](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this)确定的。
*/
var age = 18;
var newAges2 = ages .filter((item,index,ages) => {
return item>this; //这里的this就是filter传入的参数2 age;
},age);
console.log(newAges2 );
// 打印结果 32/33/40
浪客行1213的简书
xhh
网友评论