Learn JavaScript

reverse() - метод для разворота массива в обратном порядке в JavaScript

reverse() разворачивает порядок элементов массива в обратную сторону.

Первый элемент становится последним, второй предпоследним и так далее.

Синтаксис

array.reverse()

Метод не принимает аргументов.

Что делает reverse()

После вызова reverse() элементы массива меняются местами в обратном порядке.

const numbers = [1, 2, 3, 4];

numbers.reverse();

console.log(numbers); // [4, 3, 2, 1]

reverse() меняет исходный массив

Это главный момент, который важно запомнить.

reverse() работает прямо с исходным массивом, а не создаёт новый.

const letters = ["a", "b", "c"];

letters.reverse();

console.log(letters); // ["c", "b", "a"]

Что возвращает reverse()

reverse() возвращает сам изменённый массив.

const numbers = [1, 2, 3];
const result = numbers.reverse();

console.log(result);  // [3, 2, 1]
console.log(numbers); // [3, 2, 1]

Но это не новый массив, а тот же самый.

Порядок просто меняется местами

Метод не сортирует значения и ничего не сравнивает.

Он просто меняет порядок элементов на обратный.

const items = ["first", "second", "third"];

items.reverse();

console.log(items); // ["third", "second", "first"]

reverse() и toReversed()

Эти методы похожи, но работают по-разному.

const numbers = [1, 2, 3];
const result = numbers.toReversed();

console.log(numbers); // [1, 2, 3]
console.log(result);  // [3, 2, 1]

reverse() меняет исходный массив.

toReversed() возвращает новый массив.

Как сохранить исходный массив

Если нужно получить перевёрнутую копию без изменения исходного массива, обычно сначала делают копию:

const numbers = [1, 2, 3];
const reversed = [...numbers].reverse();

console.log(numbers);  // [1, 2, 3]
console.log(reversed); // [3, 2, 1]

Или используют toReversed().

Массив объектов

reverse() меняет только порядок элементов.

Сами объекты внутри массива не копируются.

const users = [
  { name: "Anna" },
  { name: "Ivan" },
];

const result = users.reverse();

console.log(result);
// [{ name: "Ivan" }, { name: "Anna" }]

Если потом изменить объект, это будет тот же самый объект, просто уже на другой позиции.

Пустые слоты

reverse() сохраняет пустые слоты массива, но переносит их на противоположные позиции.

const arr = [1, , 3];

arr.reverse();

console.log(arr); // [3, empty, 1]

Это может выглядеть неожиданно, если в массиве есть “дырки”.

reverse() и sort()

Иногда эти методы используют рядом, но задача у них разная.

const numbers = [3, 1, 2];

numbers.sort();
numbers.reverse();

console.log(numbers); // [3, 2, 1]

sort() упорядочивает элементы.

reverse() просто меняет текущий порядок на обратный.

Когда это полезно

reverse() удобно использовать, когда:

  • нужно быстро перевернуть порядок элементов
  • нужно показать массив с конца
  • изменение исходного массива допустимо

Пример:

const history = ["step-1", "step-2", "step-3"];

history.reverse();

console.log(history); // ["step-3", "step-2", "step-1"]

Частые ошибки

Думать, что reverse() создаёт новый массив

const numbers = [1, 2, 3];

numbers.reverse();

console.log(numbers); // [3, 2, 1]

Метод меняет исходный массив.

Путать reverse() и sort()

const numbers = [3, 1, 2];

numbers.reverse();

console.log(numbers); // [2, 1, 3]

reverse() не сортирует значения, а просто переворачивает текущий порядок.

Считать, что reverse() делает глубокую копию

const users = [{ name: "Anna" }, { name: "Ivan" }];
const result = users.reverse();

Метод только меняет порядок элементов, но не создаёт независимые копии объектов.

Быстрая памятка

  • reverse() разворачивает массив в обратном порядке
  • метод меняет исходный массив
  • reverse() возвращает тот же самый массив
  • reverse() не сортирует значения, а просто меняет порядок
  • если нужен новый массив, можно использовать toReversed() или копию через spread

Коротко

reverse() - это простой способ перевернуть массив в обратном порядке. Главное, что стоит запомнить: метод меняет исходный массив и возвращает его же, а не новую копию.