Kā noņemt kļūdainas vērtības no masīva JavaScript

Elementus no masīva var noņemt daudzos veidos JavaScript, taču kā visvienkāršāk noņemt visas masīva kļūdainās vērtības? Lai atbildētu uz šo jautājumu, mēs cieši aplūkosim patiesās un nepatiesās vērtības un veida piespiešanu algoritmu skriptu izaicinājuma kontekstā.

Algoritma instrukcijas

Noņemt visus falsy vērtības no array.Falsy vērtībām JavaScript ir false, null, 0, "", undefined, un NaN.Hint: mēģiniet pārveidot katru vērtību Būla.

Nodrošināti testa gadījumi

  • bouncer([7, "ate", "", false, 9])vajadzētu atgriezties [7, "ate", 9].
  • bouncer(["a", "b", "c"])vajadzētu atgriezties ["a", "b", "c"].
  • bouncer([false, null, 0, NaN, undefined, ""])vajadzētu atgriezties [].
  • bouncer([1, null, NaN, 2, undefined])vajadzētu atgriezties [1, 2].

1. risinājums: .filter () un Boolean ()

PEDAC

Problēmas izpratne : mums ir viena ievade, masīvs. Mūsu mērķis ir noņemt visas kļūdainās vērtības no masīva un pēc tam atgriezt masīvu.

Labie cilvēki freeCodeCamp mums ir teikuši, ka falsy vērtības JavaScript ir false, null, 0, "", undefined, un NaN.

Viņi arī mums ir pametuši galveno mājienu! Viņi iesaka katru masīva vērtību pārveidot par būla vērtību, lai izpildītu šo izaicinājumu. Es domāju, ka tas ir lielisks mājiens!

Piemēri / testa gadījumi : mūsu sniegtie pārbaudes gadījumi parāda, ka, ja ievades masīvā ir tikai nepatiesas vērtības, mums vienkārši jāatgriež tukšs masīvs. Tas ir diezgan vienkārši.

Datu struktūra : mēs šeit paliksim pie masīviem.

Parunāsim par .filter():

.filter() izveido jaunu masīvu ar visiem elementiem, kuri iztur pārbaudi, kuru īsteno sniegtā funkcija.

Citiem vārdiem sakot, .filter()iet cauri katram masīva elementam un saglabā visus elementus, kas iztur noteiktu pārbaudi. Visi masīva elementi, kas neiztur šo testu, tiek filtrēti - tie tiek noņemti.

Piemēram, ja mums būtu skaitļu masīvs un mēs gribētu tikai skaitļus, kas ir lielāki par 100, mēs varētu to izmantot .filter():

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

Parunāsim par mājienu katra elementa pārveidošanai par būla skaitli. Tas ir labs mājiens, jo mēs varam izmantot, .filter()lai masīvu atgrieztu tikai ar patiesām vērtībām.

Mēs to veiksim, izmantojot JavaScript tipa pārveidošanu.

JavaScript dod mums noderīgas funkcijas, lai pārveidotu vienu datu veidu citā. String()pārveido par virkni, Number()pārvērš skaitli un Boolean()pārveido par būla skaitli .

Piemēram:

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

Boolean()ir funkcija, kuru mēs īstenosim ar šo problēmu. Ja sniegtais arguments Boolean()ir patiess, tad Boolean()tas atgriezīsies. true.Ja sniegtais arguments ir nepatiess Boolean(), tad Boolean()tas atgriezīsies false.

Tas ir noderīgi, lai mums, jo mēs zinām, no norādījumiem, ka tikai false, null, 0, "", undefined, un NaNir falsy JavaScript. Katra cita vērtība ir patiesa. Zinot, ka, pārveidojot katru ievades masīva vērtību par būla vērtību, mēs varam noņemt visus elementus, kas to novērtē false, un kas apmierinās šīs problēmas prasības.

Algoritms :

  1. Nosakiet, kuras vērtības arrir nepatiesas.
  2. Noņemiet visas kļūdainās vērtības.
  3. Atgrieziet jauno masīvu, kurā ir tikai patiesas vērtības.

Kods : skatiet zemāk!

Bez komentāriem un vietējā mainīgā noņemšanas:

Ja jums ir citi risinājumi un / vai ieteikumi, lūdzu, dalieties komentāros!

Šis raksts ir daļa no freeCodeCamp algoritmu skriptu sērijas.

Šajā rakstā ir atsauce uz FreeCodeCamp pamata algoritma skriptu: Falsy Bouncer.

Jūs varat sekot man vietnēs Medium, LinkedIn un GitHub!