Извлечение и переопределение элементов массива

Прочитать значение объекта класса Array можно точно так же, как и величину свойства объекта любого другого класса: используя оператор доступа к свойствам. Так как индексы массивов являются числами, то применить для решения этой задачи оператор «.» нельзя (он требует задания имени свойства в виде идентификатора, а идентификатор не может начинаться с цифры). Прочитать значение элемента массива можно, применив оператор доступа к свойствам по строковым ключам «[]». Например:

var arr:Array=["Привет","Пока"];
trace(arr[0]); // Выводит: Привет (индекс задан в виде числа)
trace(arr["1")); // Выводит: Пока (индекс задан в виде строки)

Как видно из приведенного примера, нет никакой разницы в том, в строковом или в численном виде представлен индекс элемента, Это связано с тем, что в любом случае алгоритмом оператора «[]» проводится преобразование типа переданного операнда к строковому типу. Немного позже мы покажем, что индексы массивов являются точно такими же свойствами объектов, как и любые другие — и все различие заключается в том, что их имена образованы символами цифр.

В качестве операнда оператора «[]» может быть использован не только литерал, но и некоторое выражение, результатом вычисления которого является целое число или строка из цифр:

var arr:Array=[l,2,3];
trace(arr[Math.sin(Math.PI/2)]); // Выводит: 2 (sin<90°) =0)

При обращении к несуществующему элементу массива результатом будет undefined.


Переопределить элемент массива, как и любое другое свойство объекта, можно, используя оператор «=» (или другой оператор присваивания):

var arr:Array=[l,2,3];
arr [1]="Привет";
trace(arr); // Выводит: 1, "Привет", 3

В отличие от большинства языков программирования, длина массива в ActionScript не фиксируется при его определении. Поэтому создать массив можно и поэлементно:

var arr:Array=[]; // Создаем пустой массив
агг[0]=1; // в массиве 1 элемент
агг[1]=2; // в массиве 2 элемента
trace (arr); // Выводит: 1, 2

Так как массив является обычным объектом, то его свойства могут иметь вид не только целочисленных индексов, но и адресоваться совершенно любыми строками. Например:

var arr:Array=[l,2];
arr.property=3; // Присваиваем массиву arr свойство property
trace(arr); // Выводит: 1, 2 (трассируются только свойства-индексы)
trace(arr-property); // Выводит: 3

Принципиальных отличий между свойствами-индексами и простыми свойствами не существует.

Они проявляются только в том, что методы и свойства класса Array работают со свойствамииндексами, игнорируя остальные свойства массива.

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

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

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