Какие методы массива не мутируют исходный массив?
Массивы и структуры данных
Немутирующие методы массива возвращают новый массив или значение, не изменяя исходный. Их предпочитают в иммутабельном коде.
Немутирующие методы
Трансформация (возвращают новый массив)
- map — преобразует элементы.
- filter — отбирает по условию.
- slice — копия части.
- concat — объединение.
- flat / flatMap — «разворачивает» вложенность.
Перебор/поиск (возвращают значение)
- reduce — сворачивает в одно значение.
- find / findIndex — первый подходящий элемент/индекс.
- some / every — булев результат.
- includes / indexOf — поиск значения.
- join — строка из элементов.
Новые иммутабельные (ES2023)
- toSorted, toReversed, toSpliced, with — копии вместо мутации.
const arr = [3, 1, 2];
const sorted = arr.toSorted(); // arr не изменён
const mapped = arr.map((x) => x * 2); // новый массивНемутирующие против мутирующих
Мутирующие (push, pop, splice, sort, reverse) меняют исходный массив. Немутирующие — нет.
Зачем это нужно
В React/Redux состояние обновляют иммутабельно, поэтому используют немутирующие методы или копию.
Коротко для собеседования
Немутирующие: map, filter, slice, concat, reduce, find, some, every, includes, flat, а также новые toSorted/toReversed/with. Возвращают новый результат, не трогая исходный массив. Предпочтительны в иммутабельном коде (React/Redux).