Taulukko, joka koostuu viidestä javascript-elementistä. ▍Includes()-menetelmän vahvuudet. Syötteenä tarvitaan kolme argumenttia

  • Käännös
  • I. Iterointi todellisten taulukoiden yli
  • jokaiselle menetelmälle ja siihen liittyville menetelmille
  • silmukalle
  • Oikeanlainen käyttö for...silmukassa
  • for... of loop (implisiittinen iteraattorin käyttö)
  • Iteraattorin selkeä käyttö
  • Menetelmien käyttö todellisten taulukoiden iterointiin
  • Muunna todelliseksi taulukoksi
  • Huomautus suorituksenaikaisista objekteista
I. Reaalitaulukoiden numerointi Päällä Tämä hetki On kolme tapaa iteroida todellisen taulukon elementtejä:
  • menetelmä Array.prototype.forEach ;
  • klassikko silmukalle
  • "oikein" rakennettu...silmukalle.
  • Lisäksi pian, uuden ECMAScript 6 (ES 6) -standardin myötä, odotetaan kahta uutta menetelmää:
  • for...of silmukan (implisiittinen iteraattorin käyttö);
  • iteraattorin eksplisiittinen käyttö.
  • 1. ForEach-menetelmä ja siihen liittyvät menetelmät Jos projektisi on suunniteltu tukemaan ECMAScript 5 (ES5) -standardin ominaisuuksia, voit käyttää yhtä sen innovaatioista - forEach-menetelmää.

    Käyttöesimerkki:
    var a = ["a", "b", "c"]; a.forEach(funktio(merkintä) ( console.log(merkintä); ));
    SISÄÄN yleinen tapaus forEachin käyttäminen edellyttää es5-shim-emulointikirjaston yhdistämistä selaimille, joissa ei ole natiivi tuki tätä menetelmää. Näitä ovat IE 8 ja uudemmat varhaiset versiot, jotka ovat edelleen käytössä siellä täällä.

    forEachin etuna on, että paikallisia muuttujia ei tarvitse ilmoittaa nykyisen taulukkoelementin indeksin ja arvon tallentamiseksi, koska ne välitetään automaattisesti funktiolle. soita takaisin(takaisinsoitto) argumentteina.

    Jos olet huolissasi kunkin elementin takaisinsoittojen mahdollisista kustannuksista, älä huoli ja lue tämä.

    ForEach on suunniteltu iteroimaan kaikkia taulukon elementtejä, mutta sen lisäksi ES5 tarjoaa useita muita hyödyllisiä menetelmiä toistaaksesi kaikki tai jotkut elementit ja suorittaaksesi joitain toimintoja niillä:

    • every - palauttaa tosi, jos jokaiselle taulukon elementille takaisinkutsu palauttaa arvon, joka voidaan muuntaa tosiksi.
    • jotkut - palauttaa tosi, jos vähintään yhdelle taulukon elementille takaisinkutsu palauttaa arvon, joka voidaan muuntaa tosiksi.
    • suodatin - luo uusi joukko, mukaan lukien ne lähdetaulukon elementit, joille takaisinkutsu palauttaa true .
    • kartta - luo uuden taulukon, joka koostuu takaisinkutsun palauttamista arvoista.
    • vähentää - pienentää taulukon yhdeksi arvoksi soveltamalla takaisinkutsua taulukon jokaiseen elementtiin vuorollaan, alkaen ensimmäisestä (voi olla hyödyllistä laskettaessa taulukon elementtien ja muiden yhteenvetofunktioiden summaa).
    • vähentääRight - toimii samalla tavalla kuin pelkistys, mutta toistuu elementtien läpi käänteisessä järjestyksessä.
    2. Silmukalle Vanha hyvä säännöille:

    Var a = ["a", "b", "c"]; var-indeksi; for (indeksi = 0; indeksi< a.length; ++index) { console.log(a); }
    Jos taulukon pituus on vakio koko silmukan ajan ja silmukka itse kuuluu koodin suorituskykykriittiseen osaan (mikä on epätodennäköistä), voit käyttää "optimaalisempaa" versio varten tallentamalla taulukon pituuden:

    Var a = ["a", "b", "c"]; var indeksi, len; for (indeksi = 0, len = a.length; indeksi< len; ++index) { console.log(a); }
    Teoriassa tämän koodin pitäisi toimia hieman nopeammin kuin edellinen.

    Jos elementtien järjestys ei ole tärkeä, voit mennä vielä pidemmälle optimoinnin suhteen ja päästä eroon muuttujasta taulukon pituuden tallentamiseksi muuttamalla haun järjestystä päinvastaiseksi:

    Var a = ["a", "b", "c"]; var-indeksi; for (indeksi = a.length - 1; index >= 0; --index) ( console.log(a); )
    Nykyaikaisissa JavaScript-moottoreissa tällaiset optimointipelit eivät kuitenkaan yleensä tarkoita mitään.

    3. For...in-silmukan oikea käyttö Jos sinua kehotetaan käyttämään for...in-silmukkaa, muista, että taulukoiden iterointi ei ole sitä, mihin se on tarkoitettu. Vastoin yleistä väärinkäsitystä, for...in -silmukka ei iteroi taulukkoindeksien, vaan objektin lukuisten ominaisuuksien kautta.

    Joissakin tapauksissa, kuten iterointi harvassa taulukossa, for...in voi kuitenkin olla hyödyllistä, kunhan noudatat varotoimia, kuten alla olevassa esimerkissä näkyy:

    // a - harva matriisi var a = ; a = "a"; a = "b"; a = "c"; for (var key in a) ( if (a.hasOwnProperty(avain) && /^0$|^\d*$/.test(avain) && avain