Learn JavaScript

splice() - метод для удаления, добавления и замены элементов массива в JavaScript

splice() позволяет удалить, добавить или заменить элементы массива.

Это один из самых гибких методов массива. Главное, что стоит помнить сразу: splice() меняет исходный массив.

Синтаксис

array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)

start - позиция, с которой начинается изменение массива.

deleteCount - сколько элементов нужно удалить.

После этого можно передать новые элементы, которые нужно вставить на это место.

Что делает splice()

splice() работает прямо внутри массива:

const numbers = [1, 2, 3, 4];

numbers.splice(1, 2);

console.log(numbers); // [1, 4]

Здесь метод удалил два элемента, начиная с индекса 1.

Удаление элементов

Если передать start и deleteCount, метод удалит нужное количество элементов:

const fruits = ["apple", "banana", "orange", "kiwi"];

fruits.splice(1, 2);

console.log(fruits); // ["apple", "kiwi"]

Добавление элементов

Если deleteCount равен 0, ничего не удаляется, а новые элементы просто вставляются:

const numbers = [1, 4];

numbers.splice(1, 0, 2, 3);

console.log(numbers); // [1, 2, 3, 4]

Это удобный способ вставить элементы в середину массива.

Замена элементов

splice() умеет одновременно удалять старые элементы и вставлять новые:

const colors = ["red", "green", "blue"];

colors.splice(1, 1, "yellow");

console.log(colors); // ["red", "yellow", "blue"]

Здесь "green" был удалён и заменён на "yellow".

Что возвращает splice()

splice() возвращает массив удалённых элементов.

const numbers = [10, 20, 30, 40];
const result = numbers.splice(1, 2);

console.log(result);  // [20, 30]
console.log(numbers); // [10, 40]

Если ничего не удалилось, вернётся пустой массив:

const list = ["a", "c"];
const result = list.splice(1, 0, "b");

console.log(result); // []
console.log(list);   // ["a", "b", "c"]

Если deleteCount не указать

Если передать только start, метод удалит все элементы до конца массива:

const numbers = [1, 2, 3, 4];

numbers.splice(2);

console.log(numbers); // [1, 2]

Отрицательный индекс

start может быть отрицательным. Тогда отсчёт идёт с конца массива.

const numbers = [1, 2, 3, 4];

numbers.splice(-2, 1);

console.log(numbers); // [1, 2, 4]

Здесь -2 указывает на элемент 3.

splice() меняет исходный массив

После вызова splice() массив уже не остаётся прежним:

const items = ["a", "b", "c"];

items.splice(1, 1);

console.log(items); // ["a", "c"]

Если нужен новый массив без изменения старого, splice() обычно не подходит.

splice() и slice()

Эти методы часто путают, но они работают по-разному.

const numbers = [1, 2, 3, 4];
const result = numbers.slice(1, 3);

console.log(result);  // [2, 3]
console.log(numbers); // [1, 2, 3, 4]

slice() не меняет исходный массив.

splice() меняет.

Когда это полезно

splice() удобно использовать, когда:

  • нужно удалить элементы по индексу
  • нужно вставить элементы в середину массива
  • нужно заменить часть массива
  • изменение исходного массива допустимо

Частые ошибки

Думать, что splice() возвращает изменённый массив

const numbers = [1, 2, 3];
const result = numbers.splice(1, 1);

console.log(result); // [2]

Здесь result - это удалённые элементы, а не итоговый массив.

Забывать, что метод меняет массив

const items = ["a", "b", "c"];

items.splice(1, 1);

После этого items уже изменён.

Путать splice() и slice()

const numbers = [1, 2, 3, 4];

numbers.splice(1, 2);

Этот код меняет массив. Если нужна копия части массива, обычно используют slice().

Быстрая памятка

  • splice() удаляет, добавляет или заменяет элементы массива
  • метод меняет исходный массив
  • splice() возвращает массив удалённых элементов
  • при deleteCount = 0 можно просто вставить новые элементы
  • slice() и splice() - разные методы

Коротко

splice() - это универсальный метод для изменения массива по индексу. Он удобен, когда нужно удалить, вставить или заменить элементы, но важно помнить: метод работает прямо с исходным массивом.