Дължина на масива

Дължината на масива е броят на неговите елементи. В ActionScript можете да разберете колко елемента съдържа един масив , като използвате свойството length на класа Array:

var arr:Array=[l,2,3]; trace(arr.length); // Изходи: 3

Ако масивът няма елементи, тогава неговата дължина е 0.

Тъй като елементите на масива се броят от 0, неговата дължина винаги ще бъде с един по-голяма от индекса на последния елемент. Това трябва да се вземе предвид при използване на свойството дължина в изчисленията.

За разлика от масивите в езици като C или Pascal, масивите на ActionScript не изискват посочване на дължина, когато се създават. Дължината на масивите може да се променя динамично, докато скриптът работи. Свойството дължина също ще бъде променено:

var arr :Array= [1, 2, 3]; // Масив от три елемента rr[5J=6; // Добавяне на елемент при индекс 5 race(arr.length); // Изходи: 6 (междинните елементи бяха създадени // автоматично) trace(arr); // извежда: 1, 2, 3, недефинирано, недефинирано, 6

Горният пример илюстрира интересна функция, свързана с добавянето на нов елемент към масив. Това не само променя дължината на масива, но ако новият елемент не е съседен на последния елемент на масива, всички междинни елементи се създават автоматично с недефинирана стойност.

Струва си обаче да проверите дали това наистина е така. За да направим това, ние изброяваме всички реално съществуващи елементи на масива с помощта на цикъла for-in:

var arr:Array = [1, 2, 3]; arr[5] = 6; за (променлива i в arr) trace(); // Изходи: 5, 2, 1, 0 >

Направеният тест показа, че нашето предположение е грешно. Междинните елементи не се създават автоматично. Те простоне съществуват физически - следователно при достъп до тях се връща undefined. Резултатът, получен по време на трасирането, се дължи на факта, че алгоритъмът, който преобразува масив в низ, разчита не на действителните елементи, а на свойството дължина.

За разлика от свойството length на класа String, свойството length на класа Array може да бъде заменено. В същото време, ако новата му стойност надвишава броя на елементите в масива, тогава нови елементи с недефинирана стойност ще бъдат добавени към опашките на масива (или по-скоро ще се създаде илюзия за това в резултат на промяна на дължината на масива). Ако на дължина е присвоена стойност, която е по-малка от броя на елементите в действителния масив, тогава всички допълнителни елементи ще бъдат премахнати:

vararr:Масив=[l,2,3); arr.length=5; // Увеличаване на дължината на масива с два елемента trace(arr); // Изходи: 1, 2, 3, undefined, undefined ("създаде" два // елемента със стойност undefined) arr.length=l; // Намалява дължината на масива до един елемент trace(arr); // Изходи: 1

Както бе споменато по-горе, масивите на ActionScript са обикновени обекти, техните елементи са просто свойства, чиито имена са формирани от числа.

Това обаче не означава, че свойството за дължина взема предвид всички свойства на масива. Напротив, само свойство, което има формата на цяло число, се счита за елемент на масив:

var arr:Array=[1,2,3); // Създаване на масив от sin елементи arr.rorerty="Здравей!"; // Добавяне на свойство към масив trace(arr.length); // Резултати: 3 (наличието на свойството // не повлия по никакъв начин на дължината на масива)