Как удалить элемент из массива в JavaScript через splice по индексу?
Нужно удалить элемент из массива по индексу — например, второй по счёту. Поставил delete arr[1], но размер массива не изменился, осталась дырка undefined. Как правильно удалить элемент из массива в JS?
2 ответа
delete не годится — он лишь обнуляет ячейку, оставляя undefined и не меняя length. Для удаления по индексу нужен splice.
splice(индекс, сколько_удалить) вырезает элементы прямо в массиве:
const fruits = ['яблоко', 'банан', 'вишня', 'дыня'];
fruits.splice(1, 1); // с индекса 1 удалить 1 элемент
console.log(fruits); // ['яблоко', 'вишня', 'дыня']
Splice возвращает массив удалённых элементов и меняет исходный массив (мутирует).
Удалить по значению, а не по индексу — сначала найди индекс:
const arr = [10, 20, 30, 40];
const i = arr.indexOf(30);
if (i !== -1) {
arr.splice(i, 1);
}
console.log(arr); // [10, 20, 40]
Если нельзя менять оригинал (например, во фреймворках типа React) — сделай новый массив через filter:
const arr = [10, 20, 30, 40];
const without30 = arr.filter(x => x !== 30);
console.log(without30); // [10, 20, 40]
console.log(arr); // [10, 20, 30, 40] — цел
Не путай splice (вырезает на месте) и slice (возвращает копию-кусок, ничего не удаляя).
Удалить с конца или с начала проще специальными методами:
const arr = [1, 2, 3, 4];
arr.pop(); // удалит последний → [1, 2, 3]
arr.shift(); // удалит первый → [2, 3]
Оба возвращают удалённый элемент. splice нужен именно для удаления из середины или сразу нескольких подряд.