过滤值
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"]