В этой публикации мы с вами изучим массивы Jscript языка. По своей природе Jscript массивы чем-то похожи на объекты, так как в них тоже содержится набор значений. Но, в объектах обращение к их значениям (методы и свойства) происходит по имени, а в массивах Jscript – по индексах. Все элементы массива имеют свой числовой индекс (только целые значения), нумерация начинается с нуля, при обращении к тому или иному элементу, прописывается имя массива, а далее, в квадратных скобках указывается номер (индекс).
Jscript позволяет создавать только одномерные массивы n-й длины.
Jscript массивы могут содержать любой тип данных: числа, строки, функции, объекты и даже ссылки на другие массивы – в этом случае можно формировать многомерные матрицы!
За создание нового массива Jscript отвечает встроенный объект Array, работу которого я более детально рассмотрел в статье «Array – встроенный объект для работы с массивами и объектами«.
Давайте посмотрим на следующий пример:
//************************************************ // Создание простых массивов JScript // array.js //************************************************ var arr1, arr2, arr3 arr1 = new Array(); arr2 = new Array(3); arr3 = new Array(100, "строка", 3.5); WScript.Echo (arr1); //пусто WScript.Echo (arr2); //,, WScript.Echo (arr3); //100, "строка", 3.5 WScript.Echo (typeof(arr3)); //object |
Тут мы объявили три переменные arr1, arr2 и arr3, далее, каждой переменной дали ссылку на объект Array с помощью ключевого слова new. Видим, что arr1 является массивом нулевой длины, arr2 – длина ровна 4 (нумерация идет с нуля) и arr3 – уже содержит значения: 100, «строка», 3.5 – тут присутствует целое, вещественное и значения типа строка. Видим, что функция typeof показала, что переменная arr3 имеет тип object.
Теперь давайте посмотрим, как происходит присвоение значений и обращение к ним:
//************************************************ // Назначение и вывод значений // array_1.js //************************************************ var arr arr = new Array(3); arr[0] = 100; arr[1] = "строка"; arr[2] = true; arr[3] = 4.5; //Обе сточки являются аналогичными WScript.Echo (arr); WScript.Echo (arr[0] + "," + arr[1] + ","+ arr[2] + "," + arr[3]); |
В данном примере показано, как происходит назначение и вывод значений по индексу. Если нужно произвести вывод всех значений в цикле, то удобно использовать цикл for…in, работу с ним я подробно рассмотрел в статье «for…in – цикл для работы с массивами и объектами«.
Хорошо, теперь давайте рассмотрим пример потруднее:
//************************************************ // Пример по сложнее // array_2.js //************************************************ var arr = new Array(2), arr_new = new Array(100, true, 300), obj_new = new Object() fun_new = function(x,y){return x+y}; obj_new = {a:25, b:5, c:"новая строка"}; arr[0]=fun_new; arr[1]=obj_new; arr[2]=arr_new; WScript.Echo (arr); //Обращаемся к другому массиву WScript.Echo (arr[2][0] + " " + arr[2][1] + " " +arr[2][2]); //Вызываем функцию WScript.Echo (arr[0](4,10)); //Получаем доступ к объекту WScript.Echo (arr[1].c); |
Как видим, в данном примере мы создали функцию (fun_new), объект (obj_new) и массив (arr_new). Всё это мы присвоили новому jscript массиву arr. Мы можем вызвать функцию и обратиться к свойству объекта через индекс, и можем обратиться к значениям arr_new, то есть, присваивая в качестве индекса другой массив, мы можем обратиться к его элементам тоже по индексу (arr[2][0], arr[2][1], arr[2][2]). Это позволяет формировать матрицы произвольного размера.
Теперь, давайте рассмотрим так называемые литеральные массивы:
//************************************************ // Литералы // array_3.js //************************************************ var arr = [100,200,300,400,500]; var matrix = [[1,2,3],[4,5,6],[7,8,9]] var neo = [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[15,17,18]],[[4,7,0],[3,4,1],[0,7,4]]] WScript.Echo (typeof(arr)); WScript.Echo (arr); WScript.Echo (matrix); WScript.Echo (matrix[1][2]); WScript.Echo (neo[1][2][1]); |
Как видим, в данном случае мы создали три массива Jscript: одномерный, двумерный (матрицу) и трехмерный, все значения мы прописали сразу, заключая их в квадратные скобки, при этом ключевого слова Array мы не использовали.