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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |