Daudzdimensiju masīvi JavaScript. Divdimensiju masīvs JavaScript Pop un push metodēs

25.08.2023
  • I. Iterācija reālos masīvos
  • katrai metodei un saistītajām metodēm
  • cilpai
  • Pareiza lietošana priekš... cilpā
  • for...of cilpa (netieša iteratora izmantošana)
  • Skaidra iteratora izmantošana
  • Metožu izmantošana reālu masīvu atkārtošanai
  • Konvertēt uz reālu masīvu
  • Piezīme par izpildlaika objektiem
I. Reālo masīvu uzskaitījums On šobrīd Ir trīs veidi, kā atkārtot reāla masīva elementus:
  • metode Array.prototype.forEach ;
  • klasika cilpai
  • "pareizi" konstruēts ... in cilpa.
  • Turklāt drīzumā līdz ar jaunā ECMAScript 6 (ES 6) standarta parādīšanos ir gaidāmas vēl divas metodes:
  • for...of cilpa (netieša iteratora izmantošana);
  • nepārprotama iteratora izmantošana.
  • 1. ForEach metode un saistītās metodes Ja jūsu projekts ir izstrādāts, lai atbalstītu ECMAScript 5 (ES5) standarta funkcijas, varat izmantot vienu no tā jauninājumiem – metodi forEach.

    Lietošanas piemērs:
    var a = ["a", "b", "c"]; a.forEach(function(entry) ( console.log(entry); ));
    Parasti, lai izmantotu forEach, ir jāpievieno es5-shim emulācijas bibliotēka pārlūkprogrammām, kuras sākotnēji neatbalsta šo metodi. Tie ietver IE 8 un jaunākas versijas agrīnās versijas, kas joprojām tiek izmantoti šeit un tur.

    ForEach priekšrocība ir tāda, ka nav nepieciešams deklarēt vietējos mainīgos, lai saglabātu pašreizējā masīva elementa indeksu un vērtību, jo tie automātiski tiek nodoti atzvanīšanas funkcijai kā argumenti.

    Ja uztraucaties par iespējamām izmaksām, kas saistītas ar katra elementa atzvanīšanu, neuztraucieties un izlasiet šo.

    ForEach ir paredzēts visu masīva elementu atkārtošanai, taču papildus tam ES5 piedāvā vēl vairākas noderīgas metodes visu vai dažu elementu atkārtošanai, kā arī dažu darbību veikšanai ar tiem:

    • every - atgriež true , ja katram masīva elementam atzvanīšana atgriež vērtību , ko var pārvērst par patiesu .
    • daži — atgriež patiesu, ja vismaz vienam masīva elementam atzvanīšana atgriež vērtību, ko var pārvērst par patiesu.
    • filtrs — izveido jaunu masīvu, kas ietver tos sākotnējā masīva elementus, kuriem atzvanīšana atgriež true .
    • karte - izveido jaunu masīvu, kas sastāv no vērtībām, kuras atgrieztas atzvanīšanas laikā.
    • samazināt - samazina masīvu līdz vienai vērtībai, katram masīva elementam pēc kārtas piemērojot atzvanīšanu, sākot ar pirmo (var noderēt masīva elementu un citu kopsavilkuma funkciju summas aprēķināšanai).
    • ReductionRight — darbojas līdzīgi, lai samazinātu, bet atkārtojas caur elementiem apgrieztā secībā.
    2. Cilpai Noteikumiem vecs:

    Var a = ["a", "b", "c"]; var indekss; priekš (indekss = 0; indekss< a.length; ++index) { console.log(a); }
    Ja masīva garums ir nemainīgs visā cilpas garumā un pati cilpa pieder veiktspējai kritiskai koda sadaļai (tas ir maz ticams), varat izmantot “optimālāku” versiju, kurā tiek saglabāts koda garums. masīvs:

    Var a = ["a", "b", "c"]; var indekss, len; for (indekss = 0, len = a.garums; indekss< len; ++index) { console.log(a); }
    Teorētiski šim kodam vajadzētu darboties nedaudz ātrāk nekā iepriekšējam.

    Ja elementu secība nav svarīga, varat iet vēl tālāk optimizācijas ziņā un atbrīvoties no mainīgā masīva garuma glabāšanai, mainot meklēšanas secību uz pretējo:

    Var a = ["a", "b", "c"]; var indekss; for (index = a.length - 1; index >= 0; --index) ( console.log(a); )
    Tomēr mūsdienu JavaScript dzinējos šādas optimizācijas spēles parasti neko nenozīmē.

    3. Pareiza for...in Loop izmantošana Ja jums ir ieteicams izmantot for...in cilpu, atcerieties, ka iterācija masīvos nav tā paredzēta. Pretēji izplatītajam nepareizajam priekšstatam, cilpa for...in atkārto nevis masīva indeksus, bet gan neskaitāmas objekta īpašības.

    Tomēr dažos gadījumos, piemēram, atkārtošana retos masīvos, for...in var būt noderīga, ja vien veicat piesardzības pasākumus, kā parādīts tālāk esošajā piemērā:

    // a - rets masīvs var a = ; a = "a"; a = "b"; a = "c"; for (var atslēga in a) ( if (a.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && atslēga