Довжина масиву

Довжина масиву – це кількість його елементів. В ActionScript дізнатися, скільки елементів містить масив, можна, використовуючи властивість length класу Array:

var arr: Array = [l, 2,3]; trace(arr.length); // Виводить: 3

Якщо масив не містить елементів, його довжина дорівнює 0.

Так як відлік елементів масиву ведеться з 0, його довжина буде завжди на одиницю більше індексу останнього елемента. Це потрібно враховувати при використанні властивості length у розрахунках.

На відміну від масивів таких мов, як С або Pascal, масиви ActionScript не вимагають завдання довжини їхнього створення. Довжина масивів може динамічно змінюватися у процесі роботи сценарію. Модифікуватися при цьому буде і властивість length:

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

Наведений приклад ілюструє цікаву особливість, пов'язану з додаванням до масиву нового елемента. Мало того, що при цьому змінюється довжина масиву, але і якщо новий елемент не примикає впритул до останнього елемента масиву, всі проміжні елементи створюються автоматично зі значенням undefined.

Втім, варто перевірити, чи справді все відбувається саме так. Для цього перерахуємо всі реально існуючі елементи масиву за допомогою циклу for-in:

var arr: Array = [1, 2, 3]; arr[5] = 6; for (var і in arr) trace(); // Виводить: 5, 2, 1, 0 >

Проведена перевірка показала, що наше припущення виявилося неправильним. Проміжні елементи не створюються автоматично. Вони простофізично не існують – тому при зверненні до них повертається undefined. Отриманий при трасуванні результат пов'язані з тим, що алгоритм, переводящий масив у рядок, спирається не так на реально існуючі елементи, але в властивість length.

На відміну від якості length класу String, властивість length класу Array може бути перевизначено. При цьому, якщо нове його значення перевищує кількість елементів у масиві, то коней масиву будуть додані нові елементи зі значенням undefined (вірніше, створиться ілюзія цього в результаті зміни довжини масиву). Якщо ж length присвоюється значення, менше кількості реально наявних у масиві елементів, всі зайві елементи будуть видалені:

var arr: Array = [l, 2,3); arr.length=5; // Збільшуємо довжину масиву на два елементи trace(arr); // Виводить: 1, 2, 3, undefined, undefined ("створено" два // елемента зі значенням undefined) arr.length=l; // Зменшуємо довжину масиву до одного елемента trace(arr); // Виводить: 1

Як зазначалося вище, масиви ActionScript є звичайними об'єктами їх елементи — це властивості, імена яких утворені цифрами.

Однак це не означає, що властивість length враховує всі властивості масиву. Навпаки, елементом масиву вважається лише властивість, що має вигляд цілого числа:

var arr: Array = [1,2,3); // Створюємо масив із злочину елементів arr.рrореrty="Привіт!"; // Додаємо до масиву властивість trace(arr.length); // Виводить: 3 (наявність якості не вплинула // на довжину масиву)