So entfernen Sie falsche Werte aus einem Array in JavaScript

Es gibt viele Möglichkeiten, Elemente aus einem Array in JavaScript zu entfernen. Was ist jedoch der einfachste Weg, um alle falschen Werte aus einem Array zu entfernen? Um diese Frage zu beantworten, werden wir uns im Rahmen einer Algorithmus-Scripting-Herausforderung die Werte von Wahrheit und Falsch genauer ansehen und Zwang eingeben.

Algorithmusanweisungen

Entfernen Sie alle falsy Werte aus einem array.Falsy Werte in JavaScript sind false, null, 0, "", undefined, und NaN.Hint: Versuchen Sie, jeden Wert in einen Boolean konvertieren.

Bereitgestellte Testfälle

  • bouncer([7, "ate", "", false, 9])sollte zurückkehren [7, "ate", 9].
  • bouncer(["a", "b", "c"])sollte zurückkehren ["a", "b", "c"].
  • bouncer([false, null, 0, NaN, undefined, ""])sollte zurückkehren [].
  • bouncer([1, null, NaN, 2, undefined])sollte zurückkehren [1, 2].

Lösung 1: .filter () und Boolean ()

PEDAC

Das Problem verstehen : Wir haben eine Eingabe, ein Array. Unser Ziel ist es, alle falschen Werte aus dem Array zu entfernen und dann das Array zurückzugeben.

Die gut Leute bei freeCodeCamp haben uns gesagt , dass falsy Werte in JavaScript sind false, null, 0, "", undefined, und NaN.

Sie haben auch einen wichtigen Hinweis für uns fallen gelassen! Sie schlagen vor, jeden Wert des Arrays in einen Booleschen Wert umzuwandeln, um diese Herausforderung zu erfüllen. Ich denke das ist ein toller Hinweis!

Beispiele / Testfälle : Unsere bereitgestellten Testfälle zeigen, dass wir nur ein leeres Array zurückgeben sollten, wenn das Eingabearray nur falsche Werte enthält. Das ist ziemlich einfach.

Datenstruktur : Wir bleiben hier bei Arrays.

Reden wir über .filter():

.filter() Erstellt ein neues Array mit allen Elementen, die den von der bereitgestellten Funktion implementierten Test bestehen.

Mit anderen Worten, .filter()geht jedes Element in einem Array durch und behält alle Elemente bei, die einen bestimmten Test bestehen. Alle Elemente im Array, die diesen Test nicht bestehen, werden herausgefiltert - sie werden entfernt.

Wenn wir zum Beispiel ein Array von Zahlen hätten und nur Zahlen größer als 100 wollten, könnten wir dies .filter()erreichen:

let numbers = [4, 56, 78, 99, 101, 150, 299, 300]numbers.filter(number => number > 100)// returns [ 101, 150, 299, 300 ]

Lassen Sie uns über den Hinweis sprechen, jedes Element in einen Booleschen Wert zu konvertieren. Dies ist ein guter Hinweis, da wir .filter()das Array nur mit den wahrheitsgemäßen Werten zurückgeben können.

Wir werden dies durch JavaScript-Typkonvertierung erreichen.

JavaScript bietet nützliche Funktionen zum Konvertieren eines Datentyps in einen anderen. String()konvertiert in einen String, Number()konvertiert in eine Zahl und Boolean()konvertiert in einen Booleschen Wert.

Zum Beispiel:

String(1234)// returns "1234"
Number("47")// returns 47
Boolean("meow")// returns true

Boolean()ist die Funktion, die wir mit dieser Herausforderung implementieren werden. Wenn das angegebene Argument Boolean()wahr ist, Boolean()wird zurückgegeben. true.Wenn das angegebene Argument Boolean()falsch ist, Boolean()wird zurückgegeben false.

Dies ist nützlich für uns , weil wir von den Anweisungen wissen , dass nur false, null, 0, "", undefined, und NaNsind falsy in JavaScript. Jeder andere Wert ist wahr. Wenn wir jeden Wert im Eingabearray in einen Booleschen Wert konvertieren, können wir alle Elemente entfernen, die ausgewertet falsewerden und die die Anforderungen für diese Herausforderung erfüllen.

Algorithmus :

  1. Bestimmen Sie, welche Werte arrfalsch sind.
  2. Entfernen Sie alle falschen Werte.
  3. Gibt das neue Array zurück, das nur wahrheitsgemäße Werte enthält.

Code : Siehe unten!

Ohne Kommentare und Entfernen der lokalen Variablen:

Wenn Sie andere Lösungen und / oder Vorschläge haben, teilen Sie diese bitte in den Kommentaren mit!

Dieser Artikel ist Teil der Reihe freeCodeCamp Algorithm Scripting.

Dieser Artikel bezieht sich auf freeCodeCamp Basic Algorithm Scripting: Falsy Bouncer.

Sie können mir auf Medium, LinkedIn und GitHub folgen!