Выбрать главу

var primes = [2, 3, 5, 7, 11]; // Массив с пятью числовыми элементами

var misc = [ 1.1, true, "а", ]; // 3 элемента разных типов + завершающая запятая

Значения в литерале массива не обязательно должны быть константами - это могут быть любые выражения:

var base = 1024;

var table = [base, base+1, base+2, base+3];

Литералы массивов могут содержать литералы объектов или литералы других массивов:

var b = [[1,{х:1, у:2}], [2, {х:3, у:4}]];

Если литерал массива содержит несколько идущих подряд запятых без значений между ними, создается разреженный массив (подробнее об этом рассказывается в разделе 7.3). Элементы, соответствующие таким пропущенным значениям, отсутствуют в массиве, но при обращении к ним возвращается значение undefined:

var count = [1,,3]; // Элементы с индексами 0 и 2. count[1] => undefined

var undefs =[,,]; // Массив без элементов, но с длиной, равной 2

Синтаксис литералов массивов позволяет вставлять необязательную завершающую запятую, т.е. литерал [,,] соответствует массиву с двумя элементами, а не с тремя.

Другой способ создания массива состоит в вызове конструктора Аггау(). Вызвать конструктор можно тремя разными способами:

• Вызвать конструктор без аргументов:

var а = new Array();

В этом случае будет создан пустой массив, эквивалентный литералу [].

• Вызвать конструктор с единственным числовым аргументом, определяющим длину массива:

var а = new Array(10);

В этом случае будет создан пустой массив указанной длины. Такая форма вызова конструктора Array() может использоваться для предварительного распределения памяти под массив, если заранее известно количество его элементов. Обратите внимание, что при этом в массиве не сохраняется никаких значений и даже свойства-индексы массива с именами «0», «1» и т. д. в массиве не определены.

• Явно указать в вызове конструктора значения первых двух или более элементов массива или один нечисловой элемент:

var а = new Array(5, 4, 3, 2, 1, "testing, testing");

В этом случае аргументы конструктора становятся значениями элементов нового массива. Использование литералов массивов практически всегда проще, чем подобное применение конструктора Аггау().

7.2. Чтение и запись элементов массива

Доступ к элементам массива осуществляется с помощью оператора [ ]. Слева от скобок должна присутствовать ссылка на массив. Внутри скобок должно находиться произвольное выражение, возвращающее неотрицательное целое значение. Этот синтаксис пригоден как для чтения, так и для записи значения элемента массива. Следовательно, допустимы все приведенные далее JavaScript-инструкции:

var а = ["world"]; // Создать массив с одним элементом

var value = а[0]; // Прочитать элемент 0

а[1] = 3.14; // Записать значение в элемент 1

і = 2;

а[і] = 3; // Записать значение в элемент 2

а[і + 1] = "hello"; // Записать значение в элемент 3

а[а[і]] = а[0]; // Прочитать элементы 0 и 2, записать значение в элемент 3

Напомню, что массивы являются специализированной разновидностью объектов. Квадратные скобки, используемые для доступа к элементам массива, действуют точно так же, как квадратные скобки, используемые для доступа к свойствам объекта. Интерпретатор JavaScript преобразует указанные в скобках числовые индексы в строки - индекс 1 превращается в строку "1" , - а затем использует строки как имена свойств. В преобразовании числовых индексов в строки нет ничего особенного: то же самое можно проделывать с обычными объектами: