← Все вопросы

Как удалить элемент из массива в JavaScript через splice по индексу?

Задан 26 месяцев назад968 просмотров2 ответа
8

Нужно удалить элемент из массива по индексу — например, второй по счёту. Поставил delete arr[1], но размер массива не изменился, осталась дырка undefined. Как правильно удалить элемент из массива в JS?

2 ответа

12
✓ Принятый ответ — помог автору

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 (возвращает копию-кусок, ничего не удаляя).

4

Удалить с конца или с начала проще специальными методами:

const arr = [1, 2, 3, 4];
arr.pop();   // удалит последний → [1, 2, 3]
arr.shift(); // удалит первый   → [2, 3]

Оба возвращают удалённый элемент. splice нужен именно для удаления из середины или сразу нескольких подряд.

Ваш ответ

, чтобы ответить на вопрос.