← Все вопросы

Как развернуть массив в обратном порядке в JavaScript через reverse?

Задан 9 месяцев назад268 просмотров2 ответа
6

Нужно вывести массив задом наперёд — последний элемент первым. Нашёл .reverse(), но потом заметил, что исходный массив тоже перевернулся в другом месте кода. Это нормально? Как развернуть массив, не ломая оригинал?

2 ответа

10
✓ Принятый ответ — помог автору

Да, это нормально и важно знать: reverse() меняет исходный массив (мутирует) и заодно возвращает его же.

const arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1] — оригинал изменён

Если оригинал трогать нельзя — сначала сделай копию, потом переверни:

const arr = [1, 2, 3];
const reversed = [...arr].reverse();
console.log(reversed); // [3, 2, 1]
console.log(arr);      // [1, 2, 3] — цел

Копию можно сделать и через slice():

const reversed = arr.slice().reverse();

Перевернуть строку? У строк нет reverse, но можно через массив:

const s = 'привет';
const back = s.split('').reverse().join('');
console.log(back); // 'тевирп'

Типичная ошибка — присвоить результат и думать, что оригинал не тронут:

const original = [1, 2, 3];
const r = original.reverse();
console.log(original); // [3, 2, 1] — тоже перевернулся, это один и тот же массив!

То же касается sort и splice — все три мутируют. Запомни их как «мутирующую тройку».

3

В современных движках есть немутирующий вариант — toReversed() (ES2023):

const arr = [1, 2, 3];
const rev = arr.toReversed();
console.log(rev); // [3, 2, 1]
console.log(arr); // [1, 2, 3] — не тронут

Если среда свежая (Node 20+, актуальные браузеры) — удобно. Для совместимости со старым окружением надёжнее [...arr].reverse().

Ваш ответ

, чтобы ответить на вопрос.