В JavaScript багатовимірні масиви являють собою масиви з масивів. Для отримання доступу до елементу, скажімо, двовимірного масиву, слід двічі вказати оператор.
Припустимо, що змінна matrix являє собою масив масивів цілих чисел. Кожен з елементів matrix [j] є масивом чисел. Для звернення до окремого числа використовуємо запис: matrix [j] [k].
Приклад. Використовуємо для створення таблиці множення двомірний масив.
var matrix = new Array (10); // в матриці 10 рядків
for (var j = 0; j< matrix.length; j++)
matrix [j] = new Array (10); // d кожному рядку створили 10 стовпців
for (var row = 0; row< matrix.length; row++) {
for (col = 0; col< matrix .length; col++) {
matrix = row * col; // заповнення елементів масиву
var rezult = matrix; // результат множення 24
Типове використання двомірного масиву в JavaScript - створення масиву опцій призначеного для користувача меню. Скажімо, деяким з опцій головного меню відповідають опції розкривається підменю. Створимо масив, у якого довжина відповідає числу опцій головного меню. Елементами цього масиву будуть масиви найменувань опцій відповідних їм підміню.
mеnu = nеw Аrrаy ();
mеnu = nеw Аrrаy ( "Опція 1.1", "Опція 1.2", "," Опція 1.3 ");
mеnu = nеw Аrrаy ( "Опція 2.1", "Опція 2. 2");
mеnu = nеw Аrrаy ( "Опція 3.1", "Опція 3.2", "Опція 3.3", "Опція 3.4");
Для звернення до 1-ї опції 2-го підміню, потрібно написати:
menu // значення дорівнює "Опція 2.1";
Змінимо конструкцію масиву, щоб він містив і назви опцій головного меню, і опцій підменю:
mеnu = nеw Аrrау ()
menu = nеw Аrrау ( "Меню1", "Меню2", "МенюЗ");
menu = nеw Аrrау ();
menu = nеw Аrrау ( "Опція 1.1". "Опція 1.2", "Опція 1.3");
menu = nеw Аrrау ( "Опція 2.1", "Опція 2. 2");
menu = nеw Аrrау ( "Опція 3.1", "Опція 3. 2", "Опція З.3", "Опція 3.4");
menu // значення дорівнює "Меню2"
menu // значення дорівнює "Меню3"
menu // значення дорівнює "Опція 2.1"
menu // значення дорівнює "Опція 3.2"
Методи роботи з масивами
В даному розділі розглянемо методи, за допомогою яких можна маніпулювати елементами масивів.
join () -метод, що перетворює кожен з елементів масиву в рядок і об'єднує їх. Як аргумент методу можна вказувати необов'язкову рядок, призначену для поділу окремих елементів в підсумковому рядку. Якщо роздільник й вказати, то для поділу за замовчуванням використовується кома.
var arr =; // заданий масив з трьох елементів
var str = arr.join (); // значення str одно "12,23,38"
str = arr.join ( ";"); // str == "12; 23; 38"
Як вже зазначалося раніше, метод Array.join () є зворотним по відношенню до строковому методу String.split (), розбиває рядки на елементи масиву.
reverse () -метод, що змінює порядок розташування елементів у масиві на протилежний. Даний метод не створює нового масиву, а змінює їх порядок у вихідному масиві.
var arr = nеw Аrrау (1,2,3); // arr = 1, arr = 2, arr = 3
arr.reverse (); // arr = 3, arr = 2, arr = 1
var str = arr.jоin (); // str == "3,2,1"
sort () -метод, сортують елементи масиву на місці і повертає відсортований масив. Якщо метод sort () викликати без вказівки аргументів, він буде здійснювати сортування елементів масиву за алфавітом, для виконання порівняння при необхідності перетворюючи їх тимчасово в строкові значення.
var arr = nеw Аrrаy ( "bаnаnа", "сhеrrу", "Аррlе");
var str = arr.join ( ","); // str == "Аррlе, bаnаnа, сhеrrу"
Якщо в складі масиву є невизначений елемент, він переноситься в кінець масиву.
Для того, щоб здійснити сортування не в алфавітному порядку, а якомусь іншому, передають методу sort () як аргумент функцію порівняння, завдання якої є вказівки правила, за яким один з двох її аргументів буде в відсортованому списку розташовуватися раніше. Якщо другому повинен передувати перший аргумент, функція порівняння повинна повертати від'ємне значення. Якщо в відсортованому масиві перший аргумент повинен слідувати за другим, то функція повинна повертати позитивне число. Функція порівняння повинна повертати 0, якщо два значення є еквівалентними, тобто їх порядок не важливий. Приклад.
Зробимо сортування в числовому порядку.
var arr =;
arr.sort (); // в алфавітному порядку: 11111, 2222, 333, 44
arr.sort (function (first, second) (//
return first - second; )); // Числовий порядок: 44, 333, 2222, 11111
У цьому фрагменті коду зручно використовувати функціональний літерал, так як функція порівняння буде викликатися один раз і немає необхідності присвоювати їй ім'я.
Визначаючи інші функції сортування, можна здійснювати найрізноманітніші способи сортування.
concat () -метод, який створює і повертає новий масив, в якому містяться елементи вихідного масиву, доповнені значеннями всіх аргументів, зазначених в методі concat (). У тому випадку, коли аргумент сам являє собою масив, в підсумковий масив додадуться його елементи. Але, слід звернути увагу, що рекурсії при поділі масивів з масивів не провадиться.
var arr =;
arr.соncаt (4, 5) // результат
arr. соncаt (); // результат
arr. соncаt (,) // результат
arr. соncаt (4,]) // результат]
slice () -метод, який повертає подмассів (фрагмент) вихідного масиву. У методу є два аргументи, які вказують початок і кінець повертається подмассіва. У повернутому масиві будуть міститися елементи, починаючи з того, індекс якого зазначений першим аргументом, до того елемента, номер якого вказаний другим аргументом, але не включаючи його.
Якщо вказати єдиний аргумент, в повернутому масиві будуть міститися елементи від позиції, яка визначається аргументом, і до кінця масиву. Негативний аргумент вказує номер елемента масиву з кінця масиву.
var arr =;
arr.sliсе (0,3); // поверне
arr. sliсе (3); // поверне
arr. sliсе (1, -1); // поверне
arr. sliсе (-3, -2); // поверне
splice () -універсальний метод, який може бути використаний і для додавання, і для видалення елементів масиву, або для обох операцій одночасно. В результаті роботи методу вихідний масив змінюється.
У методі splice () перший аргумент вказує індекс масиву, з якого почнеться видалення і / або вставка, другий аргумент вказує кількість видаляються елементів. Якщо опустити другий аргумент, то будуть видалені елементи масиву, починаючи з позиції, зазначеної першим аргументом методу, і до кінця масиву. Повертає метод splice () масив віддалених елементів.Якщо другим аргументом буде значення 0, метод поверне порожній масив.
var arr =;
arr.splice (4); // поверне; arr стане дорівнює
arr.splice (1,2); // поверне; arr стане дорівнює
Після двох аргументів методу splice (), які задають підлягають видаленню елементи масиву, можуть слідувати в будь-якій кількостідодаткові аргументи, що задають вставляються в масив елементи, починаючи з індексу, заданого першим аргументом методу.
var arr =;
arr.splice (2,0, "ab", "cd"); / * Поверне; arr стане дорівнює * /
arr.splice (2,2,, 3); / * Поверне [ "ab", "cd"]; arr стане дорівнює, 3,33,44,55] * /
Слід враховувати той факт, що метод splice () аргументи-масиви не розбивати на окремі вставляються елементи, а вставляє сам масив.
push () і pop () -методи, що дозволяють використовувати масиви як стеки. Метод push () додає в кінець масиву нові елементи і повертає нову довжину масиву. Метод pop () видаляє останній елемент в масиві і повертає в якості результату роботи віддалене значення.
Обидва методи змінюють вихідний масив. При використанні в коді комбінації методів push () і pop () в JavaScript можна за допомогою масиву створити стек з правилом обслуговування: «першим увійшов - останнім вийшов».
vаr stасk =; // порожній стек
stасk.push (1,2); // масив: поверне 2
stасk. рор (); // масив: поверне 2
stасk.push (3); // масив: поверне 2
stасk.рор (); // масив: поверне 3
stасk.push (); // масив:] поверне 2
stасk. рор () // масив: поверне
stасk. рор (); // масив: поверне 1
unshift () і shift () -методи, що працюють майже так само, як push () і pop (), але вони вставка і видалення елементів здійснюється не в кінці масиву, а на початку.
Метод unshift () додає один або кілька елементів в початок масиву, зміщуючи елементи до кінця масиву, і повертає нову довжину масиву. Метод shift () служить для видалення першого елемента масиву, повертає видалений елемент.
var arr =; // arr:
arr.unshift (1); // arr: поверне 1
arr.unshift (22); // arr: поверне 2
arr.shift (); // arr: поверне 22
arr.unshift (3,); // arr:, 1] поверне 3
arr.shift (); // arr: [, 1] поверне 3
arr.shift (); // arr: поверне
arr.shift (); // arr: поверне 1
При виклику методу unshift () з декількома аргументами ці аргументи вставляються все відразу, а не по одному, як це відбувається в методі splice (). Тобто в підсумковому масиві значення будуть розташовані в такому ж порядку, в якому були записані в списку аргументів при виклику методу.
toString () і toLocaleString ()- методи, що перетворюють кожен з елементів масиву в рядок і виводять список отриманих рядків через кому. Метод toString (), як уже зазначалося, є у будь-якого об'єкта в JavaScript, і у масиву в тому числі. Зверніть увагу, що в результаті роботи методів навколо значень масиву не залишається ні квадратних дужок, ні якихось інших роздільників.
ToString () // поверне "1,2,3"
[ "А", "b", "с"]. TоString () // поверне "а, b, c"
] .TоString () // поверне "1,2, з"
Метод toString () поверне таку ж рядок, як і метод join () в разі його виклику без параметрів.
toLocaleString () - метод, при якому підсумкові рядки конкатенуються з використанням роздільника, специфічного для регіону.
Приклад 1. Створення циклічного банера (слайд-шоу).
Створимо масив зображень, які будуть з'являтися на сторінці через деякі проміжки часу.
Slide = new Array("./pic/1.gif", "./pic/2.gif", "./pic/3.gif", "./pic/4.gif", "./pic/5.gif", "./pic/6.gif", "./pic/7.gif","./pic/8.gif", "./pic/9.gif");
//Изображения находятся во вложенной папке pic
k=0; Len=Slide.length;
function rotate(){
if (document.images){
document.banner.src=Slide[k];
setTimeout ("rotate()",1*1000);