Remove all falsy values from an array.
Falsy values in JavaScript are false, null, 0, "", undefined, and NaN.
Remember to use Read-Search-Ask if you get stuck. Write your own code.
Here are some helpful links:
Boolean Objects Array.prototype.filter()
/*------------------------------------------Тупая версия со сложным фильтром------------------------------------------------------------*/
function bouncer(arr) {
function filtered(falsy){//Функция, уоторую мы зададим аргументом фильтра для мультииспользования ее
return falsy !== false && falsy !== undefined && falsy!== null && falsy!== 0 && falsy!== "" && !Number.isNaN(falsy);
/*Каждый раз задаем не "значение не равняется, filter создал бы еррей именно с этмии
значениями, если бы писали бы =="
!Number.isNaN(falsy); -для NaN есть специальнпя функция проверки на то,
является ли значиние числовым. NaN = njt a number. !Number.isNaN(falsy==NaN из условия)
!Number.isNaN() - не конвертирует аргумент в number, изначально предполагая, что ему дают число в отличии от isNaN(), котороый
конвертиурет*/
}
return arr.filter(filtered);
}
bouncer([7, "ate", "", false, 9]);
/*------------------------------------------То же, но, короче------------------------------------------------------------*/
function bouncer(arr) {
return arr.filter(function(falsy){
return falsy!==false && falsy!== undefined && falsy !== null && falsy!== 0 && falsy!=="" &&!Number.isNaN(falsy);
});
}
bouncer([7, "ate", "", false, 9]);
/*------------------------------------Умный способ с фильтром булевых значений---------------------------------------------------------*/
function bouncer(arr) {
return arr.filter(Boolean);//фильтруем на булевые значения, то есть, возвращают значения
значения, или true/false - в нашем случае, 0, undefined, NaN - вернут false, числа и стринги - true
}
bouncer([7, "ate", "", false, 9]);