Array filter()
filter 直譯 過濾器 顯然起到的效果是過濾、篩選;
filter() 方法創(chuàng)建一個新的數(shù)組,新數(shù)組中的元素是通過檢查指定數(shù)組中符合條件的所有元素。
注意
- filter() 不會對空數(shù)組進(jìn)行檢測。
2.filter() 不會改變原始數(shù)組.
語法
array.filter(function(currentValue,index,arr), thisValue)
實(shí)例應(yīng)用及參數(shù)分析
基本用法
//定義一個數(shù)組
var ages = [32, 33, 16, 40];
//定義一個函數(shù) 返回大于18的元素
function checkAdult(age) {
return age >= 18;
}
//返回原數(shù)組大于18的元素組成新的數(shù)組
var newAges = ages.filter(checkAdult);
參數(shù)分析
var ages = [32, 33, 16, 40];
var newAges= ages .filter((item,index,ages) => { 邏輯運(yùn)算 return boolean; },thisVue);
//item 要檢測的數(shù)組的當(dāng)前元素 好比 遍歷中的一個元素; 必選參數(shù)
//index 當(dāng)前元素在原數(shù)組中的下標(biāo)索引 可選參數(shù)
//ages 調(diào)用filter的當(dāng)前數(shù)組,用于作用域的問題,可能需要傳入; 可選參數(shù)
//return boolean類型的數(shù)組;
//filter的參數(shù)2 thisVue ; 作用域this 嚴(yán)格模式下filter的回調(diào)函數(shù)中的this = thisVue傳入的值,也是因作用域的問題,選擇性傳入;
/*官方所說:如果為 `filter` 提供一個 `thisArg` 參數(shù),則它會被作為 `callback` 被調(diào)用時的 `this` 值。
否則,`callback` 的 `this` 值在非嚴(yán)格模式下將是全局對象,嚴(yán)格模式下為 `undefined`。
`callback` 函數(shù)最終觀察到的 `this` 值是根據(jù)[通常函數(shù)所看到的 "this"的規(guī)則](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傳入的參數(shù)2 age;
},age);
console.log(newAges2 );
// 打印結(jié)果 32/33/40
浪客行1213的簡書

xhh