Перейти до основного вмісту

Деструктуризація масивів

Деструктуризоване присвоювання можна використовувати і для масивів, але з деякими особливостями.

  • Замість фігурних дужок {} використовуються квадратні [].
  • Змінним, зазначеним у квадратних дужках [], будуть послідовно присвоюватися значення елементів масиву.

Наприклад, є масив кольорів, з якого потрібно отримати значення кожної складової кольору в окремих змінних.

const rgb = [200, 255, 100];
const [red, green, blue] = rgb;

console.log(`R:${red},G:${green},B:${blue}`); // "R:200,G:255,B:100"

Після ключового слова const або let ставимо квадратні дужки, як і у випадку з оголошенням масиву. Всередині дужок, через кому, вказуємо імена змінних, в які будуть поміщені значення масиву.

Внаслідок такого запису будуть створені 3 змінні, і в них будуть поміщені елементи в нумерованому порядку - від 0 і до кінця масиву.

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

const rgb = [200, 255, 100];
let red, green, blue;

[red, green, blue] = rgb;

console.log(`R:${red},G:${green},B:${blue}`); // "R:200,G:255,B:100"

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

const rgb = [200, 100, 255];

const [red, green, blue, alfa = 0.3] = rgb;

console.log(`R:${red},G:${green},B:${blue},Alfa:${alfa}`); // "R:200,G:100,B:255,Alfa:0.3"

Іноді з масиву необхідно деструктуризувати тільки перші N елементів, а інші зберегти в одну змінну у вигляді масиву. Деструктуруючи масив, можна розпакувати і присвоїти іншу частину елементів масиву змінної, використовуючи операцію ... (rest).

const rgb = [200, 255, 100];

const [red, ...colors] = rgb;

console.log(red); // "200"
console.log(colors); // [255, 100]

Елементи можна пропускати. Припустимо, з масиву rgb необхідно взяти тільки останнє значення. На практиці ця можливість рідко використовується.

const rgb = [200, 100, 255];

const [, , blue] = rgb;

console.log(`Blue: ${blue}`); // "Blue: 255"