JavaScript-də çoxölçülü massivlər. JavaScript Pop və push metodlarında iki ölçülü massiv

25.08.2023
  • I. Real massivlər üzərində təkrarlama
  • forEach metodu və əlaqəli metodlar
  • döngə üçün
  • Düzgün İstifadəüçün...döngüdə
  • for...of loop (iteratorun gizli istifadəsi)
  • İteratorun açıq istifadəsi
  • Real massivlər üzərində təkrarlama metodlarından istifadə
  • Həqiqi bir sıraya çevirin
  • İş vaxtı obyektləri haqqında qeyd
I. Real massivlərin sadalanması On hal-hazırda Həqiqi massivin elementləri üzərində təkrarlamanın üç yolu var:
  • metod Array.prototype.forEach ;
  • döngə üçün klassik
  • loop üçün "düzgün" qurulmuşdur.
  • Bundan əlavə, tezliklə, yeni ECMAScript 6 (ES 6) standartının gəlməsi ilə daha iki üsul gözlənilir:
  • for...of loop (iteratorun gizli istifadəsi);
  • iteratorun açıq istifadəsi.
  • 1. forEach Metod və Əlaqədar Metodlar Əgər layihəniz ECMAScript 5 (ES5) standartının xüsusiyyətlərini dəstəkləmək üçün nəzərdə tutulubsa, siz onun yeniliklərindən birini - forEach metodundan istifadə edə bilərsiniz.

    İstifadə nümunəsi:
    var a = ["a", "b", "c"]; a.forEach(funksiya(giriş) ( console.log(giriş); ));
    Ümumiyyətlə, forEach-dan istifadə bu metodu yerli olaraq dəstəkləməyən brauzerlər üçün es5-shim emulyasiya kitabxanasını birləşdirməyi tələb edir. Bunlara IE 8 və yuxarıda daxildir erkən versiyalar, hələ də burada və orada istifadə olunur.

    ForEach-ın üstünlüyü ondan ibarətdir ki, cari massiv elementinin indeksini və dəyərini saxlamaq üçün yerli dəyişənləri elan etməyə ehtiyac yoxdur, çünki onlar avtomatik olaraq arqumentlər kimi geri çağırış funksiyasına ötürülür.

    Hər bir elementə geri zəng etməyin mümkün dəyərindən narahatsınızsa, narahat olmayın və bunu oxuyun.

    ForEach massivin bütün elementləri üzərində təkrarlamaq üçün nəzərdə tutulmuşdur, lakin buna əlavə olaraq, ES5 bütün və ya bəzi elementləri təkrarlamaq və onlar üzərində bəzi hərəkətləri yerinə yetirmək üçün daha bir neçə faydalı üsul təklif edir:

    • every - əgər serialın hər bir elementi üçün geri çağırış doğruya çevrilə bilən dəyəri qaytararsa, true qaytarır.
    • some - serialın ən azı bir elementi üçün geri çağırış doğruya çevrilə bilən dəyəri qaytararsa, doğru qaytarır.
    • filter - geri çağırışın doğru qaytardığı orijinal massivin elementlərini özündə birləşdirən yeni massiv yaradır.
    • xəritə - geri çağırışla qaytarılan dəyərlərdən ibarət yeni massiv yaradır.
    • azaltmaq - birincidən başlayaraq hər bir massiv elementinə növbə ilə geri çağırış tətbiq edərək massivi tək bir dəyərə endirir (massiv elementlərinin və digər xülasə funksiyalarının cəmini hesablamaq üçün faydalı ola bilər).
    • azaltmaqRight - azaltmağa oxşar işləyir, lakin tərs qaydada elementlər arasında təkrarlanır.
    2. Döngü üçün Qaydalar üçün köhnə:

    Var a = ["a", "b", "c"]; var indeksi; üçün (indeks = 0; indeks< a.length; ++index) { console.log(a); }
    Əgər massivin uzunluğu bütün dövrə boyu sabitdirsə və dövrənin özü kodun performans baxımından kritik hissəsinə aiddirsə (bu, çətin ki), o zaman bunun üçün “daha ​​optimal” versiyasından istifadə edə bilərsiniz. massiv:

    Var a = ["a", "b", "c"]; var indeksi, len; üçün (indeks = 0, len = a.length; indeks< len; ++index) { console.log(a); }
    Teorik olaraq, bu kod əvvəlkindən bir az daha sürətli işləməlidir.

    Elementlərin sırası vacib deyilsə, o zaman optimallaşdırma baxımından daha da irəli gedə və axtarış sırasını tərsinə dəyişdirərək massivin uzunluğunu saxlamaq üçün dəyişəndən xilas ola bilərsiniz:

    Var a = ["a", "b", "c"]; var indeksi; üçün (indeks = a.uzunluq - 1; indeks >= 0; --index) ( console.log(a); )
    Bununla belə, müasir JavaScript mühərriklərində belə optimallaşdırma oyunları adətən heç nə demək deyil.

    3. Dövrün for...in düzgün istifadəsi Əgər sizə for...in dövrəsindən istifadə etmək tövsiyə olunursa, unutmayın ki, massivlər üzərində təkrarlama onun üçün nəzərdə tutulduğu kimi deyil. Ümumi yanlış təsəvvürdən fərqli olaraq, for...in döngəsi massiv indeksləri üzərində deyil, obyektin sadalanan xassələri vasitəsilə təkrarlanır.

    Bununla belə, bəzi hallarda, məsələn, seyrək massivlər üzərində iterasiya, for...in, aşağıdakı nümunədə göstərildiyi kimi, ehtiyat tədbirləri gördüyünüz müddətcə faydalı ola bilər:

    // a - seyrək massiv var a = ; a = "a"; a = "b"; a = "c"; üçün (a-da var açarı) ( if (a.hasOwnProperty(açar) && /^0$|^\d*$/.test(açar) && açarı