Kuinka poistaa väärät arvot matriisista JavaScriptissä

On monia tapoja poistaa elementtejä matriisista JavaScriptissä, mutta mikä on helpoin tapa poistaa kaikki väärät arvot taulukosta? Vastaamiseksi tähän kysymykseen tarkastelemme tarkasti totuus- ja epätosi-arvoja ja tyypin pakottamista algoritmien komentosarjahaasteen yhteydessä.

Algoritmin ohjeet

Poista kaikki falsy arvot jostakin array.Falsy arvot JavaScript ovat false, null, 0, "", undefined, ja NaN.Hint: Kokeile muuntaa jokaisen arvon Boolen.

Toimitetut testitapaukset

  • bouncer([7, "ate", "", false, 9])pitäisi palata [7, "ate", 9].
  • bouncer(["a", "b", "c"])pitäisi palata ["a", "b", "c"].
  • bouncer([false, null, 0, NaN, undefined, ""])pitäisi palata [].
  • bouncer([1, null, NaN, 2, undefined])pitäisi palata [1, 2].

Ratkaisu # 1: .filter () ja Boolean ()

PEDAC

Ongelman ymmärtäminen : Meillä on yksi tulo, taulukko. Tavoitteenamme on poistaa kaikki virheelliset arvot taulukosta ja palauttaa sitten taulukko.

Hyvät ihmiset freeCodeCamp ovat kertoneet, että falsy arvot JavaScript ovat false, null, 0, "", undefined, ja NaN.

He ovat myös pudottaneet meille tärkeän vihjeen! He ehdottavat, että taulukon kukin arvo muunnetaan booleiksi tämän haasteen saavuttamiseksi. Mielestäni se on hieno vihje!

Esimerkit / testitapaukset : Toimitetut testitapaukset osoittavat meille, että jos syötetaulukko sisältää vain virheellisiä arvoja, meidän pitäisi vain palauttaa tyhjä taulukko. Se on melko suoraviivaista.

Tietorakenne : Aiomme pitää kiinni taulukoista.

Puhutaan .filter():

.filter() luo uuden taulukon, jossa on kaikki elementit, jotka läpäisevät testin, jonka annettu funktio toteuttaa.

Toisin sanoen, .filter()käy läpi jokaisen elementin matriisissa ja säilyttää kaikki tietyn testin läpäisevät elementit. Kaikki matriisin elementit, jotka epäonnistuvat testissä, suodatetaan pois - ne poistetaan.

Esimerkiksi, jos meillä olisi joukko numeroita ja halusimme vain numerot, jotka ovat suurempia kuin 100, voisimme käyttää .filter()tätä aikaan:

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

Puhutaan vihjeestä jokaisen elementin muuntamisesta loogiseksi. Tämä on hyvä vihje, koska voimme .filter()palauttaa matriisin vain totuusarvoilla.

Aiomme saavuttaa tämän JavaScript-tyypin muunnoksen avulla.

JavaScript antaa meille hyödyllisiä toimintoja muuntaa yhden tietotyypin toiseen. String()muuntaa merkkijonoksi, Number()muuntaa luvuksi ja Boolean()muuntaa loogiseksi.

Esimerkiksi:

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

Boolean()on toiminto, jonka toteutamme tämän haasteen kanssa. Jos annettu argumentti Boolean()on totta, Boolean()se palaa. true.Jos annettu argumentti Boolean()on väärä, niin Boolean()se palaa false.

Tästä on hyötyä meille, koska me tiedämme ohjeita vain false, null, 0, "", undefined, ja NaNovat falsy JavaScript. Jokainen muu arvo on totta. Tietäen, että jos muunnamme jokaisen tuloryhmän arvon loogiseksi arvoksi, voimme poistaa kaikki elementit, jotka arvioivat false, ja jotka täyttävät tämän haasteen vaatimukset.

Algoritmi :

  1. Määritä mitkä arvot arrovat virheellisiä.
  2. Poista kaikki väärät arvot.
  3. Palauta uusi taulukko, joka sisältää vain totuusarvot.

Koodi : Katso alla!

Ilman kommentteja ja paikallisen muuttujan poistamista:

Jos sinulla on muita ratkaisuja ja / tai ehdotuksia, jaa kommenteissa!

Tämä artikkeli on osa sarjan freeCodeCamp Algorithm Scripting -sarjaa.

Tässä artikkelissa viitataan freeCodeCamp Basic Algorithm Scripting: Falsy Bouncer -ohjelmaan.

Voit seurata minua Mediumissa, LinkedInissä ja GitHubissa!