Freecodecamp: Bonfire: Falsy Bouncer - instructions contradictoires

Créé le 15 déc. 2015  ·  3Commentaires  ·  Source: freeCodeCamp/freeCodeCamp

Défi Bonfire : Falsy Bouncer a un problème.
L'agent utilisateur est : Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 .

Les instructions à Falsy Bouncer indiquent qu'une valeur Falsy est de divers types, y compris NaN .
Le premier test nécessite que l'appel de fonction videur([7, "ate", "", false, 9]) renvoie [7, "ate", 9]
Cependant, notez que la chaîne "ate" est NaN et qu'elle ne doit donc pas être incluse dans le tableau résultant.

Par conséquent, il semble qu'il n'y ait aucun moyen de réussir le test 1 et le test 3 avec le même bloc de code, ce sont des réponses qui s'excluent mutuellement.

Mon code :

function bouncer(arr) {

  arr = arr.filter(function(val){
    if (val === false || val === null || val === undefined || val === "" || val === 0 || isNaN(val)) return false;
    return true;
  });

  return arr;
}

bouncer([false, null, 0, NaN, undefined, ""]);

Commentaire le plus utile

Et, techniquement, vous pouvez utiliser la fonction Boolean pour le faire pour vous, afin que le problème puisse être résolu :
return arr.filter(Boolean) , car Boolean prend des valeurs vrai/faux et renvoie vrai ou faux.

Tous les 3 commentaires

Je m'excuse d'avance si j'ai mal compris quelque chose ici.

NaN est une valeur réelle qu'une variable peut avoir et c'est faux. "ate" n'est pas un nombre et isNan("ate") renverra vrai, mais la valeur "ate" n'est pas fausse, seule la valeur spécifique de NaN est fausse. La beauté (et la source occasionnelle de bogues) des valeurs falsey est que vous n'avez pas besoin de les rechercher explicitement comme le fait votre code, car chaque fois qu'une valeur booléenne est nécessaire, Javascript les forcera à une valeur booléenne de false. Cela signifie que le code de votre fonction de filtrage peut simplement être celui-ci :

arr = arr.filter(function(val){
  return val;
});

Merci et bon codage !

Et, techniquement, vous pouvez utiliser la fonction Boolean pour le faire pour vous, afin que le problème puisse être résolu :
return arr.filter(Boolean) , car Boolean prend des valeurs vrai/faux et renvoie vrai ou faux.

Cette page vous a été utile?
0 / 5 - 0 notes