Длина массива. Свойство length

Длина массива — это число его элементов. В 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 i 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 (наличие свойства никак не повлияло
// на длину массива)

На практике свойство length обычно используется, если в цикле необходимо просмотреть все элементы массива. Кроме того, оно может быть полезно, если элемент должен быть добавлен в конец массива или же если некоторое действие должно быть выполнено при определенной длине массива.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Выделение фрагмента массива
Добавление элементов в массив
Извлечение и переопределение элементов массива
Инверсия массива
Особенности использования цикла for—in для обработки массивов

Вернуться в раздел: Action Script / 7. Массивы (класс Array)