過濾值
filter()
方法建立一個陣列,該陣列填充所有通過作為函式提供的測試的陣列元素。
Version >= 5.1
[1, 2, 3, 4, 5].filter(function(value, index, arr) {
return value > 2;
});
Version >= 6
[1, 2, 3, 4, 5].filter(value => value > 2);
結果在一個新的陣列:
[3, 4, 5]
過濾假值
Version >= 5.1
var filtered = [ 0, undefined, {}, null, '', true, 5].filter(Boolean);
由於 Boolean 是一個本機 javascript 函式/建構函式 ,它接受[一個可選引數]並且 filter 方法也接受一個函式並將當前陣列項作為引數傳遞給它,你可以像下面這樣讀取它:
Boolean(0)
返回 falseBoolean(undefined)
返回 falseBoolean({})
返回 true ,表示將其推送到返回的陣列Boolean(null)
返回 falseBoolean('')
返回 falseBoolean(true)
返回 true ,表示將其推送到返回的陣列Boolean(5)
返回 true ,表示將其推送到返回的陣列
所以整個過程將會產生
[ {}, true, 5 ]
另一個簡單例子
此示例使用傳遞帶有一個引數的函式的相同概念
Version >= 5.1
function startsWithLetterA(str) {
if(str && str[0].toLowerCase() == 'a') {
return true
}
return false;
}
var str = 'Since Boolean is a native javascript function/constructor that takes [one optional paramater] and the filter method also takes a function and passes it the current array item as a parameter, you could read it like the following';
var strArray = str.split(" ");
var wordsStartsWithA = strArray.filter(startsWithLetterA);
//["a", "and", "also", "a", "and", "array", "as"]