Oletem
10/10/2017 - 8:38 AM

Filtering Booleans

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]);