PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

Slice или splice мутирует массив?

Массивы и структуры данных

`splice` мутирует (изменяет) исходный массив, а `slice` — нет: `slice` возвращает копию части массива, не трогая оригинал.

slice — не мутирует

Возвращает новый массив с элементами от start до end; исходный не меняется:

const arr = [1, 2, 3, 4, 5];
const part = arr.slice(1, 3); // [2, 3]
arr; // [1, 2, 3, 4, 5] — без изменений

splice — мутирует

Удаляет/вставляет элементы на месте, меняет исходный массив, возвращает удалённые:

const arr = [1, 2, 3, 4, 5];
const removed = arr.splice(1, 2); // удалить 2 с индекса 1
removed; // [2, 3]
arr;     // [1, 4, 5] — изменён!

Мнемоника

  • sPlice — с буквой P (как в «изменяет на месте») — мутирует.
  • slice — «отрезает копию» — не мутирует.

Как избежать мутации

Работать с копией или использовать иммутабельные аналоги:

const next = [...arr]; next.splice(1, 1); // копия
const spliced = arr.toSpliced(1, 1);      // ES2023, иммутабельно

Коротко для собеседования

splice мутирует исходный массив (удаляет/вставляет на месте, возвращает удалённые); slice не мутирует (возвращает копию части). Мнемоника: sPlice изменяет. Иммутабельная альтернатива splice — toSpliced (ES2023).

Другие вопросы раздела