Freecodecamp: Bonfire: Falsy Bouncer - widersprüchliche Anleitung

Erstellt am 15. Dez. 2015  ·  3Kommentare  ·  Quelle: freeCodeCamp/freeCodeCamp

Challenge Bonfire: Falsy Bouncer hat ein Problem.
Benutzeragent ist: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 .

Die Anweisungen an Falsy Bouncer weisen darauf hin, dass ein Falsy-Wert verschiedene Typen hat, einschließlich NaN .
Der erste Test erfordert, dass der Funktionsaufruf bouncer([7, "ate", "", false, 9]) [7, "ate", 9] zurückgeben soll.
Beachten Sie jedoch, dass die Zeichenfolge "ate" NaN ist und daher nicht in das resultierende Array aufgenommen werden sollte.

Aus diesem Grund scheint es keine Möglichkeit zu geben, Test 1 und Test 3 mit demselben Codeblock zu bestehen, es handelt sich um sich gegenseitig ausschließende Antworten.

Mein 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, ""]);

Hilfreichster Kommentar

Und technisch gesehen können Sie die Funktion Boolean verwenden, um dies für Sie zu tun, damit das Problem gelöst werden kann:
return arr.filter(Boolean) , da Boolean wahr/falsch Werte annimmt und wahr oder falsch zurückgibt.

Alle 3 Kommentare

Entschuldigung im Voraus, falls ich hier etwas falsch verstanden habe.

NaN ist ein tatsächlicher Wert, den eine Variable haben kann, und er ist falsch. "ate" ist keine Zahl und isNan("ate") gibt true zurück, aber der Wert "ate" ist nicht falsey, nur der spezifische Wert von NaN ist falsey. Die Schönheit (und gelegentliche Fehlerquelle) von falsey-Werten besteht darin, dass Sie nicht explizit nach ihnen suchen müssen, wie dies in Ihrem Code der Fall ist, da JavaScript immer dann, wenn ein boolescher Wert benötigt wird, sie zu einem booleschen Wert von false erzwingt. Das bedeutet, dass der Code für Ihre Filterfunktion einfach so aussehen kann:

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

Danke und viel Spaß beim Codieren!

Und technisch gesehen können Sie die Funktion Boolean verwenden, um dies für Sie zu tun, damit das Problem gelöst werden kann:
return arr.filter(Boolean) , da Boolean wahr/falsch Werte annimmt und wahr oder falsch zurückgibt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen