toReversed() возвращает новый массив, в котором элементы идут в обратном порядке.
Это современная альтернатива reverse(), когда нужно перевернуть массив, но не менять исходные данные.
Синтаксис
array.toReversed()
Метод не принимает аргументов.
Что делает toReversed()
toReversed() создаёт новую версию массива с элементами в обратном порядке.
const numbers = [1, 2, 3, 4];
const result = numbers.toReversed();
console.log(result); // [4, 3, 2, 1]
console.log(numbers); // [1, 2, 3, 4]
Это главное, что важно запомнить: исходный массив не меняется.
Что возвращает toReversed()
toReversed() всегда возвращает новый массив.
const letters = ["a", "b", "c"];
const result = letters.toReversed();
console.log(result); // ["c", "b", "a"]
console.log(result === letters); // false
Даже если визуально результат похож на исходный массив, это всё равно другой массив.
Исходный массив не меняется
В отличие от reverse(), метод не работает “на месте”.
const items = ["first", "second", "third"];
const reversed = items.toReversed();
console.log(items); // ["first", "second", "third"]
console.log(reversed); // ["third", "second", "first"]
Это делает toReversed() удобным в коде, где важно сохранять старые данные без изменений.
toReversed() и reverse()
Это самая важная пара для сравнения.
const numbers = [1, 2, 3];
const reversed = numbers.toReversed();
console.log(numbers); // [1, 2, 3]
console.log(reversed); // [3, 2, 1]
toReversed() возвращает новый массив.
reverse() меняет исходный массив прямо на месте.
toReversed() и […arr].reverse()
До появления toReversed() часто писали так:
const numbers = [1, 2, 3];
const reversed = [...numbers].reverse();
console.log(reversed); // [3, 2, 1]
Такой вариант всё ещё работает, но toReversed() обычно читается проще и точнее показывает намерение.
Метод не сортирует значения
toReversed() не сравнивает элементы и не упорядочивает их.
Он просто переворачивает текущий порядок массива.
const numbers = [3, 1, 2];
console.log(numbers.toReversed()); // [2, 1, 3]
Если нужна именно сортировка, используют sort() или toSorted().
Массив объектов
toReversed() меняет только порядок элементов в новом массиве.
Сами объекты внутри не копируются глубоко.
const users = [
{ name: "Anna" },
{ name: "Ivan" },
];
const reversedUsers = users.toReversed();
console.log(reversedUsers);
// [{ name: "Ivan" }, { name: "Anna" }]
Если потом изменить объект, это будет тот же самый объект, только в другом массиве.
Когда это полезно
toReversed() удобно использовать, когда:
- нужно получить массив в обратном порядке
- важно не менять исходный массив
- нужен более безопасный, неизменяемый стиль кода
Пример:
const history = ["step-1", "step-2", "step-3"];
const latestFirst = history.toReversed();
console.log(history); // ["step-1", "step-2", "step-3"]
console.log(latestFirst); // ["step-3", "step-2", "step-1"]
Частые ошибки
Думать, что toReversed() меняет исходный массив
const numbers = [1, 2, 3];
numbers.toReversed();
console.log(numbers); // [1, 2, 3]
Если результат не сохранить, исходный массив останется прежним.
Путать toReversed() и reverse()
const numbers = [1, 2, 3];
const result = numbers.toReversed();
console.log(numbers); // [1, 2, 3]
console.log(result); // [3, 2, 1]
Здесь изменение происходит только в новом массиве.
Считать, что toReversed() сортирует
const numbers = [3, 1, 2];
console.log(numbers.toReversed()); // [2, 1, 3]
Метод просто переворачивает текущий порядок, а не сортирует значения.
Быстрая памятка
toReversed()возвращает новый массив в обратном порядке- исходный массив не меняется
- это “неизменяемая” альтернатива
reverse() - метод не сортирует значения, а только переворачивает порядок
- для старого подхода раньше часто писали
[...arr].reverse()
Коротко
toReversed() - это удобный способ перевернуть массив без мутации исходных данных. Главное, что стоит запомнить: метод возвращает новый массив с обратным порядком элементов, а старый массив остаётся прежним.