← Назад к вопросам

Какой метод массива удаляет элемент из массива путем мутацией?

2.2 Middle🔥 261 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Методы мутации массива для удаления элементов

Из встроенных методов массива в JavaScript несколько методов позволяют удалять элементы с мутацией исходного массива. Наиболее прямые и часто используемые из них — splice(), pop() и shift(). Давайте подробно рассмотрим каждый.

1. Array.prototype.splice() — основной метод удаления с мутацией

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

// Базовый синтаксис: array.splice(start, deleteCount, item1, item2, ...)

const fruits = ['яблоко', 'банан', 'апельсин', 'киви', 'манго'];

// Удаляем 2 элемента, начиная с индекса 1
const removed = fruits.splice(1, 2);

console.log(fruits); // ['яблоко', 'киви', 'манго'] - исходный массив изменен!
console.log(removed); // ['банан', 'апельсин'] - удаленные элементы

Ключевые особенности splice():

  • Изменяет исходный массив (мутация)
  • Возвращает массив удаленных элементов
  • Может одновременно удалять и добавлять элементы
  • Позволяет удалять элементы из середины массива

2. Array.prototype.pop() — удаление с конца массива

pop() удаляет последний элемент из массива и возвращает его:

const numbers = [1, 2, 3, 4, 5];
const lastElement = numbers.pop();

console.log(numbers); // [1, 2, 3, 4] - массив изменен
console.log(lastElement); // 5 - удаленный элемент

3. Array.prototype.shift() — удаление с начала массива

shift() удаляет первый элемент из массива и возвращает его:

const colors = ['красный', 'зеленый', 'синий'];
const firstColor = colors.shift();

console.log(colors); // ['зеленый', 'синий'] - массив изменен
console.log(firstColor); // 'красный' - удаленный элемент

Сравнение мутирующих и немутирующих методов

Важно различать мутирующие и немутирующие методы:

Мутирующие методы (изменяют исходный массив):

  • splice() — удаление/замена элементов в любом месте
  • pop() — удаление с конца
  • shift() — удаление с начала
  • Также sort(), reverse(), push(), unshift()

Немутирующие методы (возвращают новый массив/значение):

  • slice() — возвращает часть массива без изменения оригинала
  • filter() — возвращает новый массив с элементами, прошедшими проверку
  • concat() — возвращает новый массив
// Немутирующий пример для сравнения
const original = [1, 2, 3, 4, 5];
const newArray = original.filter(item => item !== 3);

console.log(original); // [1, 2, 3, 4, 5] - исходный массив НЕ изменен
console.log(newArray); // [1, 2, 4, 5] - новый массив

Практические рекомендации

  1. Когда использовать мутирующие методы:

    • Когда вам действительно нужно изменить исходный массив
    • При работе с большими массивами (мутация экономит память)
    • Когда производительность критически важна
  2. Когда избегать мутации:

    • В функциональном программировании
    • При работе с состоянием в React, Vue и других фреймворках
    • Когда нужно сохранить историю изменений
    • В многопоточных средах (Web Workers)
  3. Особый случай: удаление по индексу без splice():

// Альтернативный способ (менее эффективный, но иногда полезный)
const arr = [10, 20, 30, 40];
delete arr[2]; // Используем оператор delete

console.log(arr); // [10, 20, empty, 40] - создает "дыру" в массиве
console.log(arr.length); // 4 - длина не меняется!

Вывод

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

При выборе метода важно учитывать:

  • Требуется ли изменение исходного массива
  • Откуда нужно удалить элемент (начало, конец, середина)
  • Нужно ли сохранить удаленные элементы
  • Соответствует ли подход общим принципам вашего кода (функциональное vs императивное программирование)
Какой метод массива удаляет элемент из массива путем мутацией? | PrepBro