Создание массива и доступ к его элементам

Объект Array

В JavaScript нет типа данных массив, но с помощью объекта Array можно создавать массивы в приложениях и манипулировать ими. Функции этого объекта позволяют сортировать, объединять, записывать в обратном порядке содержимое массивов и выполнять некоторые другие действия.

Массив – это упорядоченный набор данных, к элементам которого можно обращаться по имени и индексу. Массив создается с помощью одного из следующих трех конструкторов:

Array()

Array(элемент-0, элемент-1,..., элемент-n)

Array(длина-массива)

В первом случае переменная с именем имя-массива просто объявляется как массив, не имеющих ни одного значения («пустой» массив). К элементам массива при таком объявлении нельзя обратиться, пока в сценарии им явно не будут при­своены значения.

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

Новый массив может быть создан как с использованием ключевого слова new, так и просто вызовом функции Array, т.е. предложения

a = new Array();

и

a = Array();

являются эквивалентными.

Создать массив можно также с помощью инициализатора массива, который имеет следующий синтаксис:

[ элемент-0, элемент-1,..., элемент-n ].

Если в списке элементов пропущен какой-либо элемент, ему присваивается значение undefined.

Следует отметить, что JavaScript, так же как в C, C++ и Java, нумерация элементов массивов начинается с нуля. Однако массивы в JavaScript, как и в других языках со свободным определением типа переменной, имеют следующие отличия от массивов в языках со строгим определением типа переменной (например, в языке C):

· элементы массива могут иметь разные типы, причем тип элемента массива может изменяться;

· количество элементов в массиве может изменяться;

· часть элементов массива могут не иметь значения, т.е. быть типа undefined;

· массивы могут быть только одномерными, однако элементы массива, в свою очередь могут являться массивами.

Для получения значения элемента массива необходимо в квадратных скоб­ках рядом с именем массива указать порядковый номер элемента. Элемент массива можно использовать в выражениях и в левой части оператора при­сваивания.

Оператор присваивания "=" можно использовать для объектов типа массив. В этом случае переменной в левой части будет присвоено значение переменной типа Array в правой части переменная в левой части также становится переменной типа Array. Эти две переменные становятся связанными, т.е. изменения в одной переменной автоматически приводят к изменениям в другой переменной.

При выводе (с помощью функции alert()) массив предварительно преобразуются в свое строковое представление следующим образом: сначала все элементы массива преобразуются в строки, а затем в качестве значения массива возвращается список элементов массива, разделенных запятыми. Если какое-то значение элемента массива имеет тип undefined, для него выводится пустая строка.

К переменным типа Array можно применять только операцию конкатенации – "+". В этом случае каждый операнд (в том числе и массив) в выражении справа заменяется своим строковым представлением. Результатом выражения конкатенации является строка, состоящая из строк операндов в порядке их следования в выражении.

Объект Array обладает свойством length, хранящим текущее значение количества элементов в массиве.

Пример 4.4.39. Создание объекта Array и доступ к его элементам:

1. a = new Array(); // Создание пустого массива

// Вывод размера и содержимого массива a

alert("Длина массива a: " + a.length +

" a=<" + a + ">");

// Присвоение значений некоторым элементам массива a

а[0] = "1"; а[1] = 2; а[4] = false;

с = a[1]*3; // Использование элемента массива в выражении

b = a; // Массив b имеет те же элементы, что и a

// Вывод размера и содержимого массива b

alert("Длина массива b: " + b.length + " b=" + b);

В этом фрагменте сценария создан объект типа Array с именем a, не содержащий ни одного элемента. Во второй строке нулевому элементу массива присваивается строковое значение, первому элементу – числовое значение, а пятому элементу – булевское значение. Третий и четвертый элемент массива будут иметь тип undefined. В третьей строке второй элемент массива используется в арифметическом выражении. Значение массива a присваивается массиву b.

Вывод фрагмента сценария будет иметь следующий вид:

2. a = new Array(1,2,3); // Создание массива a

b = new Array(4,5,10); // Создание массива b

// Формирование строки str помощью операции "+"

str = a + ":" + 12 + b;

// Вывод строки str

alert("str=<" + str + ">");

Вывод фрагмента сценария будет иметь следующий вид:

3. // Создание массива b

b = new Array("0", "1", "2", "3", "4",

"5", "6", "7", "8", "9");

// Добавление элементов в массив b

b[10] = b[1] + b[0]; b[11] = b[1] + b[1];

// Вывод размера и содержимого массива b

alert("Размер массива b: " + b.length + " b=" + b);

Вывод фрагмента сценария будет иметь следующий вид:

4. c1 = new Array(5); // Создание массива c1

c2 = new Array("5"); // Создание массива c1

// Вывод размеров и содержимого массивов c1 и c2

alert("Размер массива c1: " + c1.length + " c1=" + c1 +

"\nРазмер массива c2: " + c2.length + " c2=" + c2);

Вывод фрагмента сценария будет иметь следующий вид:

5. // Создание массива d с помощью инициатора

d = [17, 45, 19,, -8];

// Вывод размера и содержимого массива d

alert("Размер массива d: " + d.length + " d=" + d);

Вывод фрагмента сценария будет иметь следующий вид:

6. a = [1,2,3]; // Инициализация массива a

b = a; // Присвоение значения a массиву b

a[3] = 7; // Добавление элемента в массив a

b[4] = 0; // Добавление элемента в массив b

// Вывод размеров и содержимого массивов a и b

alert("Размер массива a: " + a.length + " a=" + a +

"\nРазмер массива b: " + b.length + " b=" + b);

Значение созданного с помощью инициализатора массива a присваивается переменной b, которая становится связанной с переменной a. В результате добавления элементов в массивы a и b эти массивы будут иметь одинаковые значения:

7. f = new Array();

f[0] = new Array("0-0");

f[1] = new Array("1-0","1-1");

f[2] = new Array("2-0","2-1","2-2");

// Вывод размеров и содержимого массива f

alert("Размер массива f: " + f.length + " f=" + f +

"\nСтрока 1: " + f[0] + "\nСтрока 2: " + f[1] +

"\nСтрока 3: " + f[2]);

В этом фрагменте сценария создается «треугольный» массив f, первый элемент которого – массив из одного элемента, второй – массив из двух элементов и третий – массив из трех элементов, т.е. массив имеет следующую структуру:

"0-0"

"1-0" "1-1"

"2-0" "2-1" "2-2"

Вывод фрагмента сценария будет иметь следующий вид:

При обращении к такому двумерному массиву используются два индекса: первый задает индекс строки, второй – индекс столбца. Так, элемент f[0][0] будет иметь значение "0-0", а элемент f[1][0]– значение "1-0".

Для объекта Array определены следующие группы функций:

· функции вставки и удаления элементов массива;

· функции перестановки элементов массива;

· функция определения «сечения» массива;

· функция преобразования массива в строку.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: