Если вы хотите исключить все неопределенные, нулевые, NaN, "", 0, простой способ сделать это - использовать комбинацию функции обратного вызова фильтра и логической функции.
var filterArr=arr.filter(function(val){
return Boolean(val);
});
Когда вы передаете значение в булеву функцию, если значение опущено или равно 0, -0, null, false, NaN, undefined или пустая строка (""), объект имеет начальное значение false ,
Вот пример такого использования:
function bouncer(arr) {
var filterArr=arr.filter(function(val){
return Boolean(val);
});
return filterArr;
}
Вот несколько тестов:
bouncer([1, null, NaN, 2, undefined]);//should return [1, 2]
bouncer([7, "ate", "", false, 9]);// should return [7, "ate", 9]
bouncer(["a", "b", "c"]);// should return ["a", "b", "c"]
bouncer([false, null, 0, NaN, undefined, ""]);//should return []