过滤值

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"]