Kako ukloniti lažne vrijednosti iz niza u JavaScript-u

Postoji puno načina za uklanjanje elemenata iz niza u JavaScriptu, ali koji je najlakši način uklanjanja svih lažnih vrijednosti iz niza? Kako bismo odgovorili na to pitanje, izbliza ćemo pogledati vrijednosti nasuprot neistinitim i prisilu tipa u kontekstu izazova skriptiranja algoritma.

Upute za algoritam

Uklonite sve falsy vrijednosti iz nekog vrijednosti array.Falsy u JavaScriptu su false, null, 0, "", undefined, i NaN.Hint: Pokušajte pretvoriti svaku vrijednost booleov.

Priloženi ispitni slučajevi

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

Rješenje br. 1: .filter () i Boolean ()

PEDAC

Razumijevanje problema : Imamo jedan ulaz, niz. Cilj nam je ukloniti sve pogrešne vrijednosti iz niza, a zatim vratiti niz.

Dobri ljudi u freeCodeCamp su nam rekli da falsy vrijednosti u JavaScriptu su false, null, 0, "", undefined, i NaN.

Pali su nam i glavni savjet! Predlažu pretvaranje svake vrijednosti niza u logičku vrijednost kako bi se postigao taj izazov. Mislim da je to izvrstan savjet!

Primjeri / test slučajevi : Naši ponuđeni test slučajevi pokazuju nam da ako ulazni niz sadrži samo lažne vrijednosti, tada bismo trebali vratiti prazan niz. To je prilično jednostavno.

Struktura podataka : Ovdje ćemo se držati nizova.

Razgovarajmo o .filter():

.filter() kreira novi niz sa svim elementima koji prolaze test koji provodi navedena funkcija.

Drugim riječima, .filter()prolazi kroz svaki element u nizu i čuva sve elemente koji prolaze određeni test. Svi elementi u nizu koji ne uspiju u tom testu filtriraju se - uklanjaju se.

Na primjer, ako smo imali niz brojeva i željeli smo samo brojeve veće od 100, mogli bismo .filter()to postići:

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

Razgovarajmo o nagovještaju pretvaranja svakog elementa u logičku vrijednost. Ovo je dobar savjet, jer možemo koristiti .filter()za vraćanje niza samo s istinitim vrijednostima.

To ćemo postići pretvorbom tipa JavaScript.

JavaScript nam daje korisne funkcije za pretvaranje jedne vrste podataka u drugu. String()pretvara u niz, Number()pretvara u broj i Boolean()pretvara u logičku vrijednost.

Na primjer:

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

Boolean()je funkcija koju ćemo provesti s ovim izazovom. Ako je argument Boolean()naveden neistinit, tada Boolean()će se vratiti true.Ako je argument dostavljen Boolean()neistinit, tada Boolean()će se vratiti false.

To je korisno za nas, jer znamo iz uputa koje se samo false, null, 0, "", undefined, i NaNsu falsy u JavaScriptu. Svaka druga vrijednost je prljava. Znajući da, ako svaku vrijednost u ulaznom polju pretvorimo u logičku vrijednost, možemo ukloniti sve elemente koji vrše evaluaciju falsei koji će zadovoljiti zahtjeve za ovaj izazov.

Algoritam :

  1. Utvrdite koje su vrijednosti u arrlažne.
  2. Uklonite sve lažne vrijednosti.
  3. Vrati novi niz koji sadrži samo istinite vrijednosti.

Šifra : Pogledajte dolje!

Bez komentara i uklanjanja lokalne varijable:

Ako imate druga rješenja i / ili prijedloge, molimo vas da podijelite s njima u komentarima!

Ovaj je članak dio serije skriptiranje algoritma freeCodeCamp.

Ovaj se članak poziva na skripte za osnovni algoritam freeCodeCamp: Falsy Bouncer.

Možete me pratiti na Medium, LinkedIn i GitHub!