PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

Как поменять порядок всех элементов массива на обратный?

Массивы и структуры данных

Порядок элементов массива меняют на обратный методом `reverse()` (мутирует исходный) или `toReversed()` (ES2023, возвращает новый), или через spread + reverse.

reverse() — мутирует

Разворачивает массив на месте, изменяя исходный:

const arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1] — arr изменён!

toReversed() — иммутабельно (ES2023)

Возвращает новый развёрнутый массив, исходный не трогает:

const arr = [1, 2, 3];
const reversed = arr.toReversed(); // [3, 2, 1], arr не изменён

Иммутабельно через spread

const reversed = [...arr].reverse(); // копия, потом reverse

Не мутирует исходный (reverse применяется к копии).

В React/иммутабельном коде

Не мутировать состояние — использовать toReversed или [...arr].reverse():

setItems([...items].reverse()); // правильно
// items.reverse() — неправильно (мутация)

Ручной способ (без методов)

function reverse(arr) {
  const result = [];
  for (let i = arr.length - 1; i >= 0; i--) {
    result.push(arr[i]);
  }
  return result;
}

Или два указателя (на месте):

let l = 0, r = arr.length - 1;
while (l < r) { [arr[l], arr[r]] = [arr[r], arr[l]]; l++; r--; }

Коротко для собеседования

Порядок массива обращают: reverse() (мутирует исходный, [3,2,1]), toReversed() (ES2023, возвращает новый, не трогает исходный) или [...arr].reverse() (иммутабельно через копию). В React используют toReversed/[...arr].reverse(), не arr.reverse() (мутация). Без методов — цикл с конца или два указателя.

Другие вопросы раздела