Learn JavaScript

toReversed() - метод для разворота массива без изменения исходного массива в JavaScript

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() - это удобный способ перевернуть массив без мутации исходных данных. Главное, что стоит запомнить: метод возвращает новый массив с обратным порядком элементов, а старый массив остаётся прежним.