JavaScript Масиви
Масив - це спеціальна змінна, яка може містити більше, ніж одне значення одночасно:
const cars = ["Saab", "Volvo", "BMW"];
Спробуйте самі »
Чому використовують масиви?
Якщо у вас є список елементів (наприклад, список назв автомобілів), зберігання автомобілів в окремих змінних може виглядіти наступним чином:
let car1 = "Saab";
let car2 = "Volvo";
let car3 = "BMW";
Однак, якщо ви хочете перебрати автомобілі та знайти конкретний? А якби у вас було не 3 автомобілі, а 300?
Рішення - масив!
Масив може містити багато значень під одним іменем, і ви можете отримати доступ до значень, лише вказавши номер індексу.
Створення масиву
Використання літералу масиву - найпростіший спосіб створити JavaScript масив.
Синтаксис:
const array_name = [item1, item2, ...];
Є наступна практика для оголошення масивів за допомогою ключового слова const.
Дізнатись більше про const з масивами в розділі: JS Array Const.
Пробіли та перенесення рядка не важливі. Оголошення може займати кілька рядків:
Ви також можете створити масив, а потім надати елементи:
Використання ключового слова JavaScript new
В наступному прикладі також створюється масив і йому присвоюються значення:
Два наведених вище приклади роблять те саме.
Немає необхідності використовувати new Array()
.
Для простоти, читабельності та швидкості виконання використовуйте перший (метод літералу масиву).
Доступ до елементів масиву
Ви отримуєте доступ до елементу масиву, посилаючись на номер індексу:
const cars = ["Saab", "Volvo", "BMW"];
let car = cars[0];
Спробуйте самі »
Примітка: Індекси масиву починаються із 0.
[0] є першим елементом. [1] є другим елементом і т.д.
Зміна елементу масиву
Ця інструкція змінює значення першого елементу в cars
:
cars[0] = "Opel";
Доступ до повного масиву
За допомогою JavaScript можна отримати доступ до повного масиву, вказавши ім’я масиву:
Приклад
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
Спробуйте самі »Масиви - це об’єкти
Масиви - це особливий тип об’єктів. Оператор typeof
в JavaScript повертає "об’єкт" для масивів.
Але JavaScript масиви краще за все описувати як масиви.
Масиви використовують числа для доступу для своїх "елементів". В цьому прикладі person[0]
повертає John:
Об’єкти використовують імена для доступу до своїх "членів". В цьому прикладі person.firstName
повертає John:
Елементи масиву можуть бути об’єктами
JavaScript змінні можуть бути об’єктами. Масиви - це особливі види об’єктів.
Із-за цього в одному масиві можуть бути змінні різних типів.
Ви можете мати об’єкти в масиві. Ви можете мати функції в масиві. Ви можете мати масиви в масиві:
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
Властивості і методи масиву
Справжня сила JavaScript масивів - це вбудовані властивості та методи масиву:
cars.length // Повертає кількість елементів
cars.sort() // Сортує масив
Методи масиву розглядаються в наступних розділах.
Властивість length (довжина)
Властивість length
масиву повертає довжину масиву (кількість елементів масиву).
Приклад
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let length = fruits.length;
Спробуйте самі »
Властивість length
завжди на одиницю більше, аніж найбільший індекс масиву.
Доступ до першого елементу масиву
Приклад
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[0];
Спробуйте самі »
Доступ до останнього елементу масиву
Приклад
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[fruits.length - 1];
Спробуйте самі »
Зациклювання елементів масиву
Найбільш безпечний спосіб перебрати масив - це використання циклу for
:
Приклад
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
Спробуйте самі »
Ви також можете використовувати функцію Array.forEach()
:
Приклад
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function myFunction(value) {
text += "<li>" + value + "</li>";
}
Спробуйте самі »
Додавання елементів масиву
Найпростіший спосіб додати новий елемент в масив - використовувати метод push()
:
Приклад
const fruits = ["Banana", "Orange", "Apple"];
fruits.push("Lemon"); // Додати новий елемент (Lemon) до масиву fruits
Спробуйте самі »
Новий елемент також можна додати в масив, використовуючи властивість length
:
Приклад
const fruits = ["Banana", "Orange", "Apple"];
fruits[fruits.length] = "Lemon"; // Додавання "Lemon" до масиву fruits
Спробуйте самі »
ПОПЕРЕДЖЕННЯ!
Додавання елементів з високими індексами може створити невизначені (undefined) "отвори" в масиві:
Приклад
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon"; // Створення undefined "отворів" в fruits
Спробуйте самі »
Асоціативні масиви
Більшість мов програмування підтримують масиви з іменованими індексами.
Масиви з іменованими індексами називаються асоціативними масивами (або хешами).
JavaScript не підтримує масиви з іменованими індексами.
В JavaScript масиви завжди використовують нумеровані індекси.
Приклад
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length; // Поверне 3
person[0]; // Поверне "John"
Спробуйте самі »
ПОПЕРЕДЖЕННЯ!!
Якщо ви використовуєте іменовані індекси, JavaScript перевизначить масив на об’єкт.
Після цього деякі методи та властивості масиву будуть давати невірні результати.
Приклад:
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // Поверне 0
person[0]; // Поверне undefined
Спробуйте самі »
Відмінності між масивами та об’єктами
В JavaScript масиви використовують нумеровані індекси.
В JavaScript об’єкти використовують іменовані індекси.
Масиви - це особливий вид об’єктів з нумерованими індексами.
Коли використовувати масиви? Коли використовувати об’єкти?
- JavaScript не підтримує асоціативні масиви.
- Ви маєте використовувати об’єкти, якщо хочете, щоб імена елементів були рядками (текстом).
- Ви маєте використовувати масиви, якщо хочете, щоб імена елементів були числами.
JavaScript new Array()
JavaScript має вбудований конструктор масиву new Array()
.
Але ви можете використовувати []
замість цього.
Це дві різних інструкції створюють новий пустий масив з іменем points:
const points = new Array();
const points = [];
Ці дві різних інструкції створюють новий масив, що містить 6 чисел:
const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
Спробуйте самі »
Ключове слово new
може продукувати неочікуваний результат:
// Створити масив з трьома елементами:
const points = new Array(40, 100, 1);
Спробуйте самі »
// Створити масив з двома елементами:
const points = new Array(40, 100);
Спробуйте самі »
// Створити масив з одним елементом ???
const points = new Array(40);
Спробуйте самі »
Наступна помилка
const points = [40];
є не такою, як:
const points = new Array(40);
// Створити масив з одним елементом:
const points = [40];
Спробуйте самі »
// Створити масив з 40 undefined елементами:
const points = new Array(40);
Спробуйте самі »
Як розпізнати масив
Розповсюджене питання: Як дізнатись, чи є змінна масивом?
Проблема в тому, що JavaScript оператор typeof
повертає "object
":
const fruits = ["Banana", "Orange", "Apple"];
let type = typeof fruits;
Спробуйте самі »
Оператор typeof повертає object
, тому що JavaScript масив є об’єктом.
Рішення 1:
Для розв’язання цієї проблеми ECMAScript 5 (JavaScript 2009) визначає новий метод Array.isArray()
:
Array.isArray(fruits);
Спробуйте самі »
Рішення 2:
Оператор instanceof
повертає true, якщо об’єкт створений даним конструктором:
const fruits = ["Banana", "Orange", "Apple"];
fruits instanceof Array;
Спробуйте самі »
Повний довідник масиву
Для більш детального ознайомлення з масивами, відвідайте:
Повний довідник JavaScript масиву на нашому сайті W3Schools українською.
Довідник містить описи та приклади всіх властивостей та методів масиву.