Array.prototype.reverse()

Метод reverse() (розвернути) примірників Array розвертає масив на місці й повертає посилання на той самий масив, причому перший елемент стає останнім, а останній – першим. Інакше кажучи, порядок елементів у масиві стає повною протилежністю вихідного.

Щоб розвернути елементи в масиві, не змінюючи вихідний масив, слід використати toReversed().

Спробуйте його в дії

Синтаксис

reverse()

Параметри

Жодних.

Повернене значення

Посилання на вихідний масив, уже розвернутий. Зверніть увагу на те, що масив розвертається на місці, і копіювання не виконується.

Опис

Метод reverse() транспонує елементи свого об'єкта масиву на місці, видозмінюючи цей масив та повертаючи посилання на нього.

Метод reverse() зберігає порожні комірки. Коли вихідний масив є розрідженим, то нові індекси, що відповідають порожнім коміркам, видаляються і також стають порожніми комірками.

Метод reverse() є узагальненим. Він лишень очікує, що значення this має властивість length і властивості з цілочисловими ключами. Хоч рядки також є подібними до масивів, цей метод не можна до них застосовувати, адже рядки – незмінювані.

Приклади

Розворот елементів у масиві

Наступний приклад створює масив items, що містить три елементи, а тоді розвертає цей масив. Виклик reverse() повертає посилання на розвернутий масив items.

const items = [1, 2, 3];
console.log(items); // [1, 2, 3]

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

Метод reverse() повертає посилання на той самий масив

Метод reverse() повертає посилання на вихідний масив, тож змінювання поверненого масиву внесе зміни також до вихідного масиву.

const numbers = [3, 2, 4, 1, 5];
const reversed = numbers.reverse();
// І numbers, і reversed – мають обернений порядок [5, 1, 4, 2, 3]
reversed[0] = 5;
console.log(numbers[0]); // 5

Коли треба, щоб reverse() не вніс зміни до вихідного масиву, а повернув поверхнево скопійований масив, подібно до інших методів (наприклад, map()), слід використати метод toReversed(). Інший варіант: можна виконати поверхневе копіювання до виклику reverse(), за допомогою синтаксису розгортання або Array.from().

const numbers = [3, 2, 4, 1, 5];
// [...numbers] утворює поверхневу копію, тож reverse() не вносить змін до вихідного масиву
const reverted = [...numbers].reverse();
reverted[0] = 5;
console.log(numbers[0]); // 3

Застосування reverse() на розріджених масивах

Розріджені масиви залишаються розрідженими навіть після виклику reverse(). Порожні комірки копіюються в нові відповідні їм індекси у вигляді нових порожніх комірок.

console.log([1, , 3].reverse()); // [3, порожньо, 1]
console.log([1, , 3, 4].reverse()); // [4, 3, порожньо, 1]

Виклик reverse() на об'єктах-немасивах

Метод reverse() зчитує властивість length із this. Потім він обробляє кожну властивість, що має ключ – ціле число, від 0 до length / 2 і міняє місцями пари відповідних індексів з обох кінців, видаляючи усі цільові властивості, для яких не існують відповідні вихідні властивості.

const arrayLike = {
  length: 3,
  unrelated: "foo",
  2: 4,
  3: 33, // ігнорується reverse(), оскільки length – 3
};
console.log(Array.prototype.reverse.call(arrayLike));
// { 0: 4, 3: 33, length: 3, unrelated: 'foo' }
// Індекс 2 – видаляється, оскільки спершу індекса 0 не було
// Індекс 3 лишається без змін, оскільки length – 3

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
reverse
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 5.5
Opera Full support 4
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також