Перейти к основному содержимому

Spread / Rest +

Примеры использования

Копирование

const foo = [1, 2, 3];

// Копирование
const bar1 = [...foo]; // [ 1, 2, 3 ]

// Копирование с добавлениeм новых элементов
const bar = [...foo, 4, 5, 6]; // [ 1, 2, 3, 4, 5, 6 ]

Глубокое копирование

Пример со spread

const a = [{ x: 1 }, { x: 2 }];
const b = [...a];

// изменяем b
b[0].x = 999;

// a nоже поменялось
console.log(a[0].x); // 999 (внутренний объект общий :( )

Пример со structuredClone

const a = [{ x: 1 }, { x: 2 }];
const b = structuredClone(a);

b[0].x = 999;
console.log(a[0].x); // 1 (внутренний объект не общий :) )

Конкатинация

const foo = [1, 2, 3];
const bar = [4, 5, 6];

// через spread
const sum1 = [...foo, ...bar]; // [ 1, 2, 3, 4, 5, 6 ]

// через .concat()
const sum2 = foo.concat(bar); // [ 1, 2, 3, 4, 5, 6 ]

Преобразование строки

const chars = [...'hello']; // ["h","e","l","l","o"]

Конвертация списка

const set = new Set([1, 2, 2, 3]);
const uniq = [...set]; // [1,2,3]