Skip to main content

Оператор ... spread

Коли він використовується з масивом, він "розкриває" цей масив, тобто розкладає його елементи по місцях.


Приклад:

javascript
const arr = [1, 2, 3]; console.log(...arr); // 1 2 3

...arr розпаковує масив, перетворюючи його на послідовність значень. Без нього ти б отримав [1, 2, 3], а з ним - просто 1 2 3.


Основні застосування з масивами:

1. Копіювання масиву

javascript
const numbers = [1, 2, 3]; const copy = [...numbers]; console.log(copy); // [1, 2, 3] console.log(copy === numbers); // false (новий масив)

Так створюється поверхнева копія масиву.


2. Об'єднання масивів

javascript
const a = [1, 2]; const b = [3, 4]; const merged = [...a, ...b]; console.log(merged); // [1, 2, 3, 4]

Можна вставляти і між іншими елементами:

javascript
const result = [0, ...a, 99, ...b]; console.log(result); // [0, 1, 2, 99, 3, 4]

3. Додавання елементів на початок або в кінець

javascript
const arr = [2, 3]; const newArr = [1, ...arr, 4]; console.log(newArr); // [1, 2, 3, 4]

4. Передача елементів як окремих аргументів

javascript
const nums = [10, 20, 30]; function sum(a, b, c) { return a + b + c; } console.log(sum(...nums)); // 60

...nums розкриває масив в аргументи функції.


5. Створення нового масиву зі зміненим елементом (іммутабельно)

javascript
const arr = [1, 2, 3]; const newArr = [...arr.slice(0, 1), 99, ...arr.slice(2)]; console.log(newArr); // [1, 99, 3]

Чудовий прийом для React та інших місць, де не можна мутувати дані.


6. Перетворення ітерованих об'єктів на масив

javascript
const str = "hello"; const chars = [...str]; console.log(chars); // ["h", "e", "l", "l", "o"]

Spread працює з усіма ітерованими об'єктами - рядками, Set, Map, NodeList тощо.


Важливо пам'ятати:

  • Робить лише поверхневу копію (вкладені об'єкти копіюються за посиланням).
  • Працює тільки з ітерованими об'єктами (наприклад, не зі звичайними об'єктами, якщо не використовувати {...obj}).

Коротко:

Що робитьРозкриває (розпаковує) елементи масиву
Тип операції"Розширення"
ПовертаєНабір значень
Змінює вихідний масивНі
Підходить длякопіювання, об'єднання, передачі аргументів
Приклад[...arr] -> [1, 2, 3]

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.