CodeNix

692378482

codenix.sv

admin@codenix.net

Масиви в JavaScript

Опубліковано: Категорія: JavaScript Переглядів: 5155

типи даних javascript масиви

Що таке масив

Масив - це тип даних, який зберігає пронумеровані значення. Кожне пронумерована значення називається елементом масиву, а число, з яким зв'язується елемент, називається його індексом. Масиви JavaScript нетипізовані, це означає, що елемент масиву може мати будь-який тип, причому різні елементи одного масиву можуть мати різні типи. Крім цього масиви JavaScript є динамічними, це означає, що оголошувати фіксований розмір не потрібно і можна додати нові елементи в будь-який час.

Створення масивів в JavaScript

Масив можна створити двома способами, перший: створити масив за допомогою литерала масиву - квадратні дужки [], всередині яких розташований список елементів, розділених комами.

var empty = [];  //пустий масив
var numbers = [4, 1, 2, 5]; //масив з 5 числовими елементами
var diff = [1.5, false, "текст"];  //масив з 3 елементами різного типу

Значення не обов'язково повинні бути простими (числа або рядки) - це також можуть бути і будь-які інші вирази, наприклад: літерали об'єктів, інші масиви або функції.

var num = 700;
var tab = [function(a) { alert(a) }, { name: 'Петя' }, [1, 2, 3], num + 1];

Другий спосіб створення масиву - виклик конструктора Array(). Викликати конструктор Array() можна трьома способами.

  • Виклик конструктора без аргументів:
    var b = new Array();

    У цьому випадку створюється порожній масив, еквівалентний порожньому літералу [].

  • У конструкторі явно вказуються значення n елементів масиву:
    var b = new Array(1, 3, 5, 8, "рядок", true);

    У цьому випадку конструктор отримує список аргументів, які стають елементами нового масиву. Аргументи записуються в масив в тому порядку, в якому вказані.

  • Виділення місця для подальшого присвоювання значень. Це робиться шляхом зазначення при визначенні масиву одного числа в круглих дужках:
    var b = new Array(5);

    Цей спосіб визначення масиву передбачає виділення масиву певної кількості елементів (кожен з яких має значення undefined) з можливістю подальшого присвоювання значень по ходу сценарію. Така форма зазвичай використовується для попереднього розміщення масиву, якщо його довжина відома заздалегідь.

Читання, запис і додавання елементів масиву

Доступ до елементів масиву здійснюється за допомогою оператора []. Елементи масиву в JavaScript нумеруються, починаючи з нуля. Щоб отримати потрібний елемент масиву, треба вказати його номер у квадратних дужках.

var numbers = [4, 1, 2, 5];
 
document.write(numbers[0] + ", "); // 4,
document.write(numbers[1] + ", "); // 1,
document.write(numbers[2] + ", "); // 2,
document.write(numbers[3]);        // 5

Елементи масиву можна змінювати:

var numbers = [4, 1, 2, 5];
 
numbers[0] = 10; // змінили перший елемент масиву - [10, 1, 2, 5]

Щоб додати новий елемент масиву, достатньо присвоїти нове значення:

var numbers = [4, 1];
 
numbers[2] = 7; //стало [4, 1, 7]

Довжина масиву

Всі масиви, як створені за допомогою конструктора Array(), так і масиви визначені за допомогою литерала, мають спеціальну властивість length, яка повертає загальне число елементів, що зберігаються в масиві. Оскільки масиви можуть мати невизначені елементи (що мають значення undefined), більш точне формулювання звучить так: властивість length завжди на одиницю більше, ніж найбільший індекс (номер) елемента масиву. Властивість length автоматично оновлюється, залишаючись коректною при додаванні нових елементів у масив.

Щоб отримати останній елемент масиву можна скористатися так само властивістю length:

var v = ["JavaScript", "Властивість", "Масиви"];
 
document.write(v[v.length - 1]); //Масиви

Останній елемент має індекс на 1 менше ніж, довжина масиву, так як відлік починається з нуля. Тому, якщо ви не знаєте точну кількість елементів, але вам треба звернутися до останнього елемента масиву використовується запис: v.length - 1.

Перебір елементів масиву

Найбільш часто властивість length використовується для перебору елементів масиву в циклі:

var fruits = ["яблуко", "банан", "полуниця", "персик"];
 
for(var i = 0; i < fruits.length; i++)
  document.write(fruits[i] + "<br>"); 
/*
яблуко
банан
полуниця
персик
*/  

У цьому прикладі передбачається, що елементи масиву розташовані безперервно і починаються з першого елемента (з індексом 0). Якщо це не так, перед зверненням до кожного елементу масиву потрібно перевіряти, чи він визначений:

var fruits = ["яблуко", "банан", "полуниця", "персик"];
 
for(var i = 0; i < fruits.length; i++)
  if (fruits[i] != undefined)
    document.write(fruits[i] + "<br>");
/*
яблуко
банан
полуниця
персик
*/   

Цикл можна також використовувати і для ініціалізації елементів масиву:

var bar = new Array(10);
 
for(var i = 0; i < bar.length; i++)
  bar[i] = i * 2;   

Усічення і збільшення масиву

При роботі з масивами, довжина властивості length автоматично оновлюється, тому нам самим не доводиться про це дбати. Але варто згадати про одну деталь - властивість length доступна не тільки для читання, але і для запису. Якщо властивості length вказати значення менше поточного, то масив коротшає до нової (заданої) довжини, будь-які елементи, які не потрапляють в новий діапазон індексів, відкидаються і їх значення втрачаються, навіть якщо потім повернути length назад - значення не будуть відновлені.

var foo = [5, 2, 4, 9];
      
foo.length = 1; // скорочуємо до 1 елемента - [5]
foo.length = 4; // відновлюємо попередню кількість елементів
      
document.write(foo[3]);  //виведе: undefined

Найпростішим способом очистити масив буде: foo.length = 0.

Якщо властивість length зробити більшим, ніж її поточне значення, в кінець масиву додадуться нові невизначені елементи, збільшуючи масив до зазначеного розміру.

Видалення елементів масиву

Оператор delete записує в елемент масиву значення undefined, при цьому сам елемент продовжує існування. Для видалення елементів так, щоб елементи, котрі залишилися, змістилися на звільнене місце необхідно скористатися одним із передвизначених методів масиву. Метод Array.shift() видаляє перший елемент масиву, pop() - останній елемент масиву, метод splice() - один або діапазон елементів в будь-якому місці масиву.

Багатовимірні масиви JavaScript

Нагадаємо, що масиви JavaScript можуть містити як елементи інші масиви. Цю особливість можна використовувати для створення багатовимірних масивів. Для доступу до елементів в масиві масивів досить використовувати кадратние дужки двічі.

var matrix = [
  [3, 3, 3],
  [1, 5, 1],
  [2, 2, 2]
];
      
document.write(matrix[1][1]); // 5

Розберемо, що написано в прикладі, matrix - це масив масивів чисел. Будь-який елемент matrix[n] - це масив чисел. Для доступу до певного числа в масиві треба написати matrix[n][n], в других квадратних дужках вказується індекс елемента внутрішнього масиву.

Асоціативні масиви в JavaScript

Об'єкти можна використовувати в якості асоціативних масивів. Трохи теорії - асоціативні масиви (звані також хеш-таблицями) дозволяють замість індексів використовувати рядки. Застосування асоціативних масивів дуже схоже на використання імені властивості звичайного об'єкта, але в даному випадку при роботі в форматі масиву. Оскільки в JavaScript немає методів для роботи з асоціативними масивами вони застосовуються значно рідше, ніж звичайні, хоча точно також можуть бути корисні для зберігання інформації і полегшують запам'ятовування елементів, до яких потрібно отримати доступ.


Коментарі