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