Sådan fjernes falske værdier fra et array i JavaScript

Der er mange måder at fjerne elementer fra et array i JavaScript, men hvad er den nemmeste måde at fjerne alle falske værdier fra et array? For at besvare dette spørgsmål vil vi se nærmere på sandhed versus falske værdier og skrive tvang inden for rammerne af en algoritme scripting udfordring.

Algoritme instruktioner

Fjern alle falsy værdier fra en array.Falsy værdier i JavaScript er false, null, 0, "", undefined, og NaN.Hint: Prøv at konvertere hver værdi til en boolesk.

Medfølgende testtilfælde

  • bouncer([7, "ate", "", false, 9])skulle vende tilbage [7, "ate", 9].
  • bouncer(["a", "b", "c"])skulle vende tilbage ["a", "b", "c"].
  • bouncer([false, null, 0, NaN, undefined, ""])skulle vende tilbage [].
  • bouncer([1, null, NaN, 2, undefined])skulle vende tilbage [1, 2].

Løsning nr. 1: .filter () og boolsk ()

PEDAC

Forståelse af problemet : Vi har et input, en matrix. Vores mål er at fjerne alle falske værdier fra arrayet og derefter returnere arrayet.

De gode folk på freeCodeCamp har fortalt os, at falsy værdier i JavaScript er false, null, 0, "", undefined, og NaN.

De har også droppet et stort tip til os! De foreslår at konvertere hver værdi af arrayet til en boolsk for at udføre denne udfordring. Jeg synes, det er et godt tip!

Eksempler / testtilfælde: Vores leverede testtilfælde viser os, at hvis input-arrayet kun indeholder falske værdier, skal vi bare returnere et tomt array. Det er ret ligetil.

Datastruktur : Vi holder fast i arrays her.

Lad os tale om .filter():

.filter() opretter et nyt array med alle elementer, der består testen implementeret af den leverede funktion.

Med andre ord .filter()går gennem hvert element i en matrix og bevarer alle de elementer, der består en bestemt test. Alle de elementer i matrixen, der fejler denne test, filtreres ud - de fjernes.

For eksempel, hvis vi havde en række numre, og vi kun ville have tallene større end 100, kunne vi bruge .filter()til at opnå det:

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

Lad os tale om antydningen til at konvertere hvert element til en boolsk. Dette er et godt tip, fordi vi kan bruge .filter()til at returnere arrayet med kun de sandhedsværdier.

Vi skal opnå dette gennem konvertering af JavaScript-type.

JavaScript giver os nyttige funktioner til at konvertere en datatype til en anden. String()konverterer til en streng, Number()konverterer til et tal og Boolean()konverterer til en boolsk.

For eksempel:

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

Boolean()er den funktion, vi implementerer med denne udfordring. Hvis argumentet, der leveres til, Boolean()er sandt, Boolean()vil det vende tilbage. true.Hvis argumentet, der leveres til, Boolean()er falsk, Boolean()vil det returnere false.

Dette er nyttigt for os, fordi vi kender fra de instruktioner, der kun false, null, 0, "", undefined, og NaNer falsy i JavaScript. Hver anden værdi er sandfærdig. Når vi ved, at hvis vi konverterer hver værdi i input-arrayet til en boolsk, kan vi fjerne alle elementer, der evalueres til false, og som vil opfylde kravene til denne udfordring.

Algoritme :

  1. Bestem, hvilke værdier der arrer falske.
  2. Fjern alle falske værdier.
  3. Returner det nye array, der kun indeholder sandhedsværdier.

Kode : Se nedenfor!

Uden kommentarer og fjernelse af den lokale variabel:

Hvis du har andre løsninger og / eller forslag, bedes du dele i kommentarerne!

Denne artikel er en del af serien freeCodeCamp Algorithm Scripting.

Denne artikel henviser til freeCodeCamp Basic Algorithm Scripting: Falsy Bouncer.

Du kan følge mig på Medium, LinkedIn og GitHub!