Объект 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 определены следующие группы функций:
· функции вставки и удаления элементов массива;
· функции перестановки элементов массива;
· функция определения «сечения» массива;
· функция преобразования массива в строку.