Hack Frontend Community

Методы массивов в JavaScript мутирующие и немутирующие

Методы массивов в JavaScript

JavaScript предоставляет мощный набор методов для работы с массивами. Все они делятся на мутирующие (изменяют исходный массив) и немутирующие (возвращают новый массив или значение, не затрагивая оригинал).

Мутирующие методы массива

Эти методы изменяют сам массив:

МетодОписание
push()Добавляет элемент в конец
pop()Удаляет последний элемент
shift()Удаляет первый элемент
unshift()Добавляет элемент в начало
splice()Удаляет, заменяет или вставляет элементы по индексу
sort()Сортирует массив (по умолчанию как строки, можно передать функцию сравнения)
reverse()Меняет порядок элементов на противоположный
fill()Заполняет массив определённым значением
copyWithin()Копирует элементы внутри массива

Пример splice()

const arr = [1, 2, 3, 4];
arr.splice(1, 2); // Удаляет 2 элемента с индекса 1
console.log(arr); // [1, 4]

Немутирующие методы массива

Эти методы не изменяют оригинальный массив, а возвращают новое значение:

МетодОписание
slice()Возвращает подмассив
concat()Объединяет массивы
map()Создаёт новый массив, применяя функцию к каждому элементу
filter()Фильтрует элементы по условию
find()Возвращает первый элемент, подходящий под условие
findIndex()Возвращает индекс первого подходящего элемента
every()Проверяет, удовлетворяют ли все элементы условию
some()Проверяет, удовлетворяет ли хотя бы один элемент условию
reduce()Преобразует массив в одно значение
includes()Проверяет наличие значения
indexOf()Возвращает индекс первого совпадения
lastIndexOf()Возвращает индекс последнего совпадения
flat()"Разворачивает" вложенные массивы
join()Преобразует массив в строку
toSorted()Новый способ сортировки без мутации массива (ES2023)

Пример map()

const nums = [1, 2, 3];
const doubled = nums.map(n => n * 2);
console.log(doubled); // [2, 4, 6]

Важно:

Методы sort(), reverse(), splice() изменяют исходный массив. Если хотите сохранить оригинал, предварительно делайте копию: const sorted = [...array].sort()

Вывод

  • Используйте мутирующие методы осознанно, когда изменение массива допустимо.
  • Отдавайте предпочтение немутирующим методам при необходимости сохранить оригинал.