JavaScript-də bilmədiyiniz üç massiv sirri. Elementlərin sayı massivin həqiqi ölçüsünü göstərmir. Həqiqi bir sıraya çevirin

At JavaScript öyrənmək obyektlərdə hamımız “ kimi ifadələrə rast gəlirik. Massivlərdir sadə obyektlər Javascript-də" Bu gün mən bu bəyanatı daha da araşdırmaq istəyirəm:

Nümunəyə baxın

Yuxarıdakı misala baxsanız, massivin obyekt tipi olduğu aydın olar. Amma bu nə deməkdir?

Əgər tanış deyilsinizsə operator növü, onda bu barədə daha çox məlumatı burada tapa bilərsiniz.

Vərəsəlik

JavaScript-in obyektlər və massivlərlə işləməsi arasındakı fərqi başa düşmək üçün irsiyyət prinsipinə nəzər salaq.

Hər bir obyekt öz ana (prototip) obyektinə istinad ehtiva edir. Siz metodu çağırdığınız zaman JavaScript onu işlədiyiniz obyektdə axtaracaq. Metod tapılmazsa, prototipin axtarışı başlayacaq. Axtarış metod tapılana və ya kök obyektə çatana qədər bütün prototip zənciri boyunca aparılır.

Nümunəyə baxın

Yuxarıdakı nümunə öz ad parametri ilə şəxs obyekti yaradır. toString metodu çağırıldıqda əvvəlcə şəxs obyekti yoxlanılır, sonra onun prototipi yoxlanılır ( Obyekt.prototip). Adətən qaytaran prototip məntiqindən istifadə edir.

Obyektlər və massivlər arasındakı fərq

Massivlər ənənəvi JavaScript obyektlərindən əhəmiyyətli fərqlərə malikdir. Səbəb massivlərə xas olan bütün metodları təmsil edən Array.prototype obyektindədir. Hər yeni massiv bu metodları Array.prototype-dən miras alır.

Qeyd etmək vacibdir ki, Array.prototype-də prototip xassəsinin dəyəri Object.prototype-dir. Bu o deməkdir ki, massivlər sadəcə obyektlərdir, lakin ilə əlavə üsullar. Obyektin etdiyi, massivin edə bilməyəcəyi heç bir şey yoxdur.

Nümunəyə baxın

Qəribəliklər

JavaScript obyektləri kimi massivlərin də öz qəribəlikləri var.

İndekslənməmiş xassələr

Massivlər sadəcə obyektlər olduğundan, siz onlara indeksləşdirilməmiş xassələri tətbiq edə bilərsiniz. Bu, adətən, təəccübləndirən ilk şeydir. Aşağıdakı nümunədə sıralanmış və adlı iki indeksləşdirilməmiş xassə təyin edirəm groceries array tərəfindən yazılmışdır.

Qeyd: Obyektlərdə olduğu kimi, həm nöqtə, həm də mötərizə dəstəklənir.

Nümunəyə baxın

uzunluq

Massivin uzunluq xüsusiyyəti də tez-tez çaşqınlıq yaradır. Bu xassə çox vaxt massivdəki elementlərin sayılması ilə qarışdırılır. Bununla belə, uzunluq ən böyük massiv indeksindən ədədi olaraq böyükdür. Buna görə də, indeksləşdirilməmiş xüsusiyyətlər nümunədə göstərildiyi kimi massivin uzunluğuna təsir göstərmir.

Uzunluğun yanıltıcı ola biləcəyi başqa bir vəziyyət, cari uzunluq massiv dəyərindən daha böyük bir indeksə element əlavə etməyə çalışmağımızdır. Diqqət yetirin ki, misalda 9-da seriala üçüncü element əlavə edildikdən dərhal sonra massivin uzunluğu 2-dən 10-a yüksəldi.

Uzunluq xüsusiyyətinin dəyəri dəyişdikdə, indeksi yeni uzunluq dəyərindən yuxarı olan hər bir element silinir.

Qeyd:

Düzgün uzunluq dəyərini əldə etmək üçün siz Object.keys(groceries).length istifadə edə bilərsiniz. Nəzərə alın ki, bu, siz onları siyahıya alınmayan kimi təyin etməyincə, indeksləşdirilməmiş xassələri də əhatə edir. Yəni:

Object.defineProperty(baqqal, "çeşidlənmiş", (qiymət: yalan, sadalana bilən: yanlış, konfiqurasiya edilə bilən: doğru, yazıla bilən: doğru ));

Bəs biz nə etməliyik?

Xüsusiyyətlər toplusu yaratmaq lazımdırsa müxtəlif növlər, obyektlər yaratmaq üçün JavaScript istifadə edin. Bütün digər hallarda, bir sıra istifadə edə bilərsiniz.

“JavaScript: Arrays vs Objects” məqaləsinin tərcüməsi mehriban layihə komandası tərəfindən hazırlanmışdır.

  • Tərcümə
  • I. Real massivlər üzərində təkrarlama
    1. forEach metodu və əlaqəli metodlar
    2. döngə üçün
    3. Düzgün İstifadəüçün...döngüdə
    4. for...of loop (iteratorun gizli istifadəsi)
    5. İteratorun açıq istifadəsi
    1. Real massivlər üzərində təkrarlama metodlarından istifadə
    2. Həqiqi bir sıraya çevirin
    3. İş vaxtı obyektləri haqqında qeyd

I. Real massivlər üzərində təkrarlama

Aktiv hal-hazırda Həqiqi massivin elementləri üzərində təkrarlamanın üç yolu var:
  1. metod Array.prototype.forEach ;
  2. döngə üçün klassik
  3. 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:
  1. for...of loop (iteratorun gizli istifadəsi);
  2. iteratorun açıq istifadəsi.

1. ForEach metodu və əlaqəli 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ə es5-shim emulyasiya kitabxanası olmayan brauzerlər üçün qoşulmağı tələb edir. yerli dəstək bu üsul. 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 ehtiva edə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öngə boyu sabitdirsə və döngənin özü kodun performans baxımından kritik hissəsinə aiddirsə (bu mümkün deyil), onda siz “daha ​​optimal”dan istifadə edə bilərsiniz. üçün versiya massivin uzunluğunu saxlamaqla:

Var a = ["a", "b", "c"]; var indeksi, len; üçün (indeks = 0, len = a.uzunluq; 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. for...in döngəsindən düzgün istifadə

Əgər sizə for...in loopundan istifadə etməyi məsləhət görürlərsə, 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ı<= 4294967294) { console.log(a); } }
Bu nümunədə, döngənin hər iterasiyasında iki yoxlama aparılır:

  1. massivin açar adlanan öz xassəsinə malik olması (prototipindən miras alınmayıb).
  2. bu açar dəyəri 4294967294-dən kiçik olan tam ədədin ondalık təsvirini ehtiva edən sətirdir. Son nömrə haradan gəlir? ES5-də massiv indeksinin tərifindən, massivdəki elementin malik ola biləcəyi ən yüksək indeks belədir: (2^32 - 2) = 4294967294 .
Əlbəttə ki, belə yoxlamalar döngəni yerinə yetirərkən lazımsız vaxt aparacaq. Lakin seyrək massiv vəziyyətində bu üsul for loopundan daha səmərəlidir, çünki bu halda yalnız massivdə açıq şəkildə müəyyən edilmiş elementlər təkrarlanır. Beləliklə, yuxarıdakı nümunədə yalnız 3 iterasiya yerinə yetiriləcək (0, 10 və 10000 indeksləri üçün) - for döngəsində 10001-ə qarşı.

Hər dəfə massiv vasitəsilə təkrarlamalı olduğunuz zaman belə çətin yoxlama kodu yazmamaq üçün onu ayrıca funksiya kimi yaza bilərsiniz:

Funksiya arrayHasOwnIndex(massiv, açar) ( qaytar array.hasOwnProperty(açar) && /^0$|^\d*$/.test(açar) && açarı<= 4294967294; }
Sonra nümunədəki döngənin gövdəsi əhəmiyyətli dərəcədə azalacaq:

Üçün (a-da açar) ( if (arrayHasOwnIndex(a, açar)) ( console.log(a); ) )
Yuxarıda müzakirə olunan yoxlama kodu universaldır, bütün hallar üçün uyğundur. Bunun əvəzinə, formal olaraq tamamilə düzgün olmasa da, lakin əksər hallarda uyğun olsa da, daha qısa bir versiyadan istifadə edə bilərsiniz:

Üçün (a-da açar) ( if (a.hasOwnProperty(açar) && String(parseInt(açar, 10)) === açar) ( console.log(a); ) )

4. For... of loop (iteratorun gizli istifadəsi)

Hələ qaralama statusunda olan ES6 JavaScript-ə iteratorları təqdim etməlidir.

İterator dəyərlər ardıcıllığını (sonlu və ya sonsuz) əldə etməyin standart yolunu müəyyən edən bir obyekt tərəfindən həyata keçirilən protokoldur.
İterator növbəti() metodunu təyin edən obyektdir - iki xassə ilə obyekti qaytaran arqumentsiz funksiya:

  1. tamamlandı (boolean) - iterator təkrarlana bilən ardıcıllığın sonuna çatdıqda doğrudur. Əks halda dəyər yanlışdır.
  2. dəyər - iterator tərəfindən qaytarılan dəyəri müəyyən edir. Görülən xüsusiyyət doğrudursa, müəyyən edilməmiş (itkin) ola bilər.
Bir çox daxili obyektlər, o cümlədən. real massivlərin defolt olaraq iteratorları var. Həqiqi massivlərdə iteratordan istifadə etməyin ən sadə yolu new for...of construct istifadə etməkdir.

Üçün istifadə nümunəsi...of:

Varval; var a = ["a", "b", "c"]; üçün (a) ( console.log(val); )
Yuxarıdakı misalda for...of döngəsi massivin hər bir dəyərini əldə etmək üçün dolayısı ilə Array obyektinin iteratorunu çağırır.

5. İteratorun açıq şəkildə istifadəsi

İteratorlar da açıq şəkildə istifadə oluna bilər, lakin bu halda kod for...of döngəsi ilə müqayisədə xeyli mürəkkəbləşir. Bu kimi bir şey görünür:

Var a = ["a", "b", "c"]; var it = a.entries(); var giriş; isə (!(giriş = it.next()).bitdi) ( console.log(entry.value); )
Bu nümunədə Array.prototype.entries metodu massivin dəyərlərini göstərmək üçün istifadə edilən iteratoru qaytarır. Hər iterasiyada entry.value [açar, dəyər] formasının massivini ehtiva edir.

II. Massiv kimi obyektlərin təkrarlanması

Real massivlərə əlavə olaraq JavaScript-də də var massiv kimi obyektlər . Onların real massivlərlə ortaq cəhəti onların uzunluq xassəsinə və massivin elementlərinə uyğun ədədlər kimi adlandırılan xassələrə malik olmasıdır. Nümunələrə NodeList kolleksiyasının DOM-u və istənilən funksiya/metod daxilində mövcud olan psevdoarqumentlər daxildir.

1. Real massivlər üzərində təkrarlama metodlarından istifadə

Ən azı, hamısı olmasa da, çoxu real massivlər üzərində iterasiya üsullarından massiv kimi obyektlər üzərində təkrarlamaq üçün istifadə edilə bilər.

For və for...in konstruksiyaları real massivlərdə olduğu kimi massiv kimi obyektlərə də tətbiq oluna bilər.

ForEach və digər Array.prototype metodları massiv kimi obyektlərə də aiddir. Bunu etmək üçün Function.call və ya Function.apply istifadə etməlisiniz.

Məsələn, əgər siz Node obyektinin childNodes xassəsinə forEach tətbiq etmək istəyirsinizsə, bunu belə edərdiniz:

Array.prototype.forEach.call(node.childNodes, function(child) ( // uşaq obyekti ilə bir şey edin));
Bu hiylənin təkrar istifadəsini asanlaşdırmaq üçün siz Array.prototype.forEach metoduna istinadı ayrıca dəyişəndə ​​elan edə və onu qısa yol kimi istifadə edə bilərsiniz:

// (Aşağıdakı bütün kodların eyni əhatə dairəsində olduğunu fərz etsək) var forEach = Array.prototype.forEach; // ... forEach.call(node.childNodes, function(child) ( // uşaq obyekti ilə nəsə etmək));
Əgər massiv kimi obyektin iteratoru varsa, o, real massivlərdə olduğu kimi obyekt üzərində təkrarlamaq üçün açıq və ya gizli şəkildə istifadə edilə bilər.

2. Həqiqi massivə çevirin

Massiv kimi obyekti təkrarlamağın başqa, çox sadə yolu da var: onu real massiləyə çevirin və real massivlər üzərində təkrarlamaq üçün yuxarıda müzakirə olunan üsullardan hər hansı birini istifadə edin. Dönüşüm üçün siz hər hansı massiv kimi obyektə tətbiq oluna bilən ümumi Array.prototype.slice metodundan istifadə edə bilərsiniz. Bu, aşağıdakı nümunədə göstərildiyi kimi çox sadə şəkildə edilir:

Var trueArray = Array.prototype.slice.call(arrayLikeObject, 0);
Məsələn, NodeList kolleksiyasını faktiki massiləyə çevirmək istəsəniz, sizə belə bir kod lazımdır:

Var divs = Array.prototype.slice.call(document.querySelectorAll("div"), 0);
Yeniləyin: Şərhlərdə qeyd edildiyi kimi

Massivlər çoxlu ardıcıl dəyərləri “bir yerdə” saxlamağa imkan verən ən çox istifadə edilən dəyişən növlərindən biridir. Bununla belə, JavaScript-ə gəldikdə, təkmilləşdirmə üçün yer var.

Bu yazıda massivlərlə işləyərkən istifadə oluna bilən üç az tanınan texnikaya baxacağıq.

1. Massivlərə xüsusi xassələrin əlavə edilməsi

JavaScript dili daxilində massivin tərifini tapmaq üçün axtarışdan istifadə etsəniz, əksər mənbələr bu tip dəyişən dəyərinin obyekt kimi təqdim olunduğunu bildirir.

Ümumiyyətlə, JavaScript-də qarşılaşdığımız bir çox şey obyektlərdir. Qeyd etmək ədalətli olardı ki, dildə "ibtidai" məlumat növləri də var, lakin onların dəyərləri hansısa şəkildə obyektlərin içərisində olan xassələrdə istifadə olunur.

2. Döngü daxilində massiv elementlərinə daxil olmaq

Massiv indeksləri yalnız müsbət qiymətlər ala bildiyi üçün hesablama sıfırdan başlayır. Daha sonra bu indeksdən verilmiş döngə iterasiyasında massiv elementinə daxil olmaq üçün istifadə edə bilərik.

ECMAScript6, indekslərdən istifadə etmədən, lakin yeni for…of loop vasitəsilə massivdə sürüşdürmə üsulunu təqdim etdi.

For...of döngəsi elementin indeksinə təsir etmədən massivin elementləri arasında təkrarlamaq üçün nəzərdə tutulmuşdur.

Var ary = ["portağal","alma","liçi"]; for (let item of ary)( console.log(item); ) // "portağal", "alma", "lychee" Müqayisə üçün: for döngəsində element indekslərinin çıxarılması. var ary = ["portağal","alma","liçi"]; üçün (var element = 0; maddə< ary.length; item++){ console.log(item); } // 0, 1, 2

3. Elementlərin sayı massivin ölçüsü deyil

Massivin ölçüsü haqqında danışarkən biz onu adətən orada saxlanılan elementlərin sayı kimi düşünürük. Əslində, bu tamamilə doğru deyil - uzunluq xüsusiyyəti elementin maksimum indeksindən asılı olaraq hesablanır.

Uzunluq xüsusiyyəti çox qeyri-müəyyəndir. Bunu yoxlamaq üçün aşağıdakı manipulyasiyalara baxmaq kifayətdir:

Var ary = ; ary.length = 3; console.log(ar.uzunluq); // 3 ary = "abcd"; console.log(ar.uzunluq); // 6

Sonuncu misalda elementi beşinci yerə qoymaq kifayət idi, nəticədə massivin uzunluğu 6 oldu. Əgər 0-dan 4-ə qədər indekslərin avtomatik yaradılacağını düşünürsünüzsə, yanılırsınız. Bunu in operatoru vasitəsilə yoxlamaq olar.

Var ary = ; ary.length = 3; console.log(ar.uzunluq); // 3 ary = "abcd"; console.log(ar.uzunluq); // 6 console.log(ariyada 0); // yalan

Bu halda, ary massivi "seyrək" adlandırmaq ədalətli olardı.

Biz həmçinin massivləri kəsmək üçün uzunluq xassəsini manipulyasiya edə bilərik. Aşağıdakı misal ary massivinin uzunluq xassəsini azaltmaqla 5-ci indeksdəki elementin “itirilməsini” nümayiş etdirir.

Var ary = ; ary.length = 3; console.log(ar.uzunluq); // 3 ary = "abcd"; console.log(ar.uzunluq); // 6 ary.length = 2; console.log(ar.uzunluq); // 2 console.log(ary); // qeyri-müəyyən

Massivlər eyni zamanda birdən çox dəyəri saxlamaq üçün istifadə olunan proqramlaşdırma dillərində geniş istifadə olunan məlumat növüdür. Bununla belə, JavaScript dilinin bəzi aspektlərinin spesifikliyinə görə massivlər çox vaxt müzakirə olunmayan bəzi funksiyalara malikdir. Bu yazıda mən üç az tanınan, lakin hələ də vacib JavaScript massiv funksiyasına baxacağam ki, bəlkə də mövcud olduğunu dərk edə bilməzsiniz...

Başlamazdan əvvəl qeyd etmək istərdim ki, bu mətn oxşar yazının məntiqi davamıdır - buna görə də linki izləyin və oxuyun :)

Massivlərə xüsusi xassələrin əlavə edilməsi

Əgər tam tərif üçün internetdə axtarış etmisinizsə JavaScript-də massivlər, onda çox güman ki, bunun yazıldığı mənbələri tapacaqsınız JavaScript-də massivlər cisimlərdir və nə qədər qəribə səslənsə də, doğrudur.

Əslində, demək olar ki, hər şeylə məşğul oluruq JavaScript bir obyektdir. Əsasən iki növ var JavaScript-də məlumatlarprimitivlərobyektlər, lakin primitivlər həmişə obyektlərin içərisinə bükülür.

Massiv elementləri arasında dövr edin

Bu altyazı oxuduqdan sonra, yəqin ki, “Yeni heç nə yoxdur - mən bunu artıq bilirəm” deyə düşündünüz və siz qismən haqlı olacaqsınız, çünki hər kəs, hətta yeni başlayanlar da massivin elementləri arasında dövrə vura bilər, amma əslində bunların hamısı olduqca mücərrəddir və döngə massiv indeksləri arasında dönəcək.

Çünki massiv indeksləri yalnız mənfi olmayan tam ədədlərdən ibarətdir, bir döngədə biz adətən sıfırdan başlayan və massivin ölçüsünü əks etdirən ədədlə bitən tam dəyərini "itrarlayırıq" və sonra elementə daxil olmaq üçün "təkrarlanan" dəyərdən istifadə edirik. verilmiş indeksdə massiv.

Bununla belə, ECMAScript6-da indekslər haqqında düşünmədən massivin dəyərlərini təkrarlaya biləcəyiniz bir üsul var və bunu for...of döngəsindən istifadə edərək edə bilərsiniz.

Massivdə for...of döngəsi serialın elementləri üzərində indeks sırası ilə təkrarlanacaq, başqa sözlə, indekslər arasında təkrarlamaq və mövcud olanı əldə etmək üçün artıq narahat olmağa ehtiyac yoxdur. verilmiş indeksdə massiv dəyərləri. Əgər siz sadəcə massivin elementlərini dövri olaraq çıxarmaq və onlarla işləməyə başlamaq istəyirsinizsə, for…of döngəsi idealdır. Məsələn:

JavaScript

var arr = ["alma","banan","portağal"]; for (item element of arr)( console.log(item); ) // "alma","banan","portağal"

Müqayisə üçün indi baxaq standart massiv döngəsi dəyər indeksini açıq şəkildə göstərmədən.

JavaScript

var arr = ["alma","banan","portağal"]; üçün (var element = 0; maddə< arr.length; item++){ console.log(item); } // 0, 1, 2

Elementlərin sayı massivin həqiqi ölçüsünü göstərmir

Tipik olaraq, biz massivin ölçüsü haqqında danışarkən, onu ya massivin ehtiva etdiyi dəyərə malik olan bir ədəd, ya da massivə əl ilə verdiyimiz bir ölçü kimi düşünürük. Lakin, reallıqda massiv ölçüsü onda mövcud olan ən böyük indeksdən asılıdır.

Uzunluq- (Bilirəm ki, buna ümumiyyətlə uzunluq deyilir, amma mən onu ölçü adlandırmağa çox öyrəşmişəm, ona görə də kimisə yanıltmışamsa, məni əvvəlcədən bağışlayın) - çox çevik bir xüsusiyyət. Massivin ölçüsünü əvvəlcədən təyin etmisiniz, yoxsa davam etsəniz massivə dəyərlər əlavə edin, ölçüsü müvafiq olaraq artmağa davam edir. Məsələn:

JavaScript

var arr = ; arr.length = 3; console.log(arr.length); // 3 arr = "abcd"; console.log(arr.length); // 6

var arr = ;

arr. uzunluq = 3;

// 3

arr [5 ] = "abcd" ;

konsol. log (arr. uzunluq );

// 6

Yuxarıdakı misalda görürsünüz ki, mən 5 indeksində massivə yalnız bir qiymət verdim və onun ölçüsü 6 oldu. İndi siz düşünürsünüzsə ki, 5-ci indeksə dəyər əlavə edərək massiv avtomatik olaraq 0-dan 4-ə qədər indekslər yaratdı, o zaman siz dərindən yanılırsınız. Bu massivdə həqiqətən 0-dan 4-ə qədər mövcud indekslər yoxdur. Bunu in operatorundan istifadə edərək yoxlaya bilərsiniz.

JavaScript

var arr = ; arr.length = 3; console.log(arr.length); // 3 arr = "abcd"; console.log(arr.length); // 6 console.log(0 in arr); // yalan

var arr = ;

arr. uzunluq = 3;

konsol. log (arr. uzunluq );

// 3

arr [5 ] = "abcd" ;

konsol. log (arr. uzunluq );