過濾值

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 方法也接受一個函式並將當前陣列項作為引數傳遞給它,你可以像下面這樣讀取它:

  1. Boolean(0) 返回 false
  2. Boolean(undefined) 返回 false
  3. Boolean({}) 返回 true ,表示將其推送到返回的陣列
  4. Boolean(null) 返回 false
  5. Boolean('') 返回 false
  6. Boolean(true) 返回 true ,表示將其推送到返回的陣列
  7. 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"]