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 sufalse
, 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 NaN
su 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 false
i koji će zadovoljiti zahtjeve za ovaj izazov.
Algoritam :
- Utvrdite koje su vrijednosti u
arr
lažne. - Uklonite sve lažne vrijednosti.
- 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!