Filtering values
The filter() method creates an array filled with all array elements that pass a test provided as a function.
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);
Results in a new array:
[3, 4, 5]
Filter falsy values
Version ≥ 5.1
var filtered = [ 0, undefined, {}, null, '', true, 5].filter(Boolean);
Since Boolean is a native JavaScript function/constructor that takes [one optional parameter] and the filter method also takes a function and passes it the current array item as parameter, you could read it like the following:
- Boolean(0) returns false
- Boolean(undefined) returns false
- Boolean({}) returns true which means push it to the returned array
- Boolean(null) returns false
- Boolean('') returns false
- Boolean(true) returns true which means push it to the returned array
- Boolean(5) returns true which means push it to the returned array
so the overall process will result
[ {}, true, 5 ]
Another simple example
This example utilises the same concept of passing a function that takes one argument
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 parameter] 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"]