Array.prototype.reverse()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

reverse() 方法用於 Array 例項,可將陣列中的元素原地翻轉,並返回對同一陣列的引用。陣列的第一個元素會變成最後一個,最後一個元素會變成第一個。換句話說,陣列中元素的順序將與之前相反。

要反轉陣列中的元素而不修改原始陣列,請使用 toReversed()

試一試

const array = ["one", "two", "three"];
console.log("array:", array);
// Expected output: "array:" Array ["one", "two", "three"]

const reversed = array.reverse();
console.log("reversed:", reversed);
// Expected output: "reversed:" Array ["three", "two", "one"]

// Careful: reverse is destructive -- it changes the original array.
console.log("array:", array);
// Expected output: "array:" Array ["three", "two", "one"]

語法

js
reverse()

引數

無。

返回值

返回對原始陣列的引用,該陣列已被反轉。請注意,陣列是原地反轉的,不會建立副本。

描述

reverse() 方法會原地修改呼叫它的陣列物件,並返回對該陣列的引用。

reverse() 方法會保留空位。如果源陣列是稀疏的,則空位對應的新的索引會被刪除,並也成為空位。

reverse() 方法是通用的。它只期望 `this` 值具有 `length` 屬性和整數鍵屬性。雖然字串也是類陣列的,但此方法不適用於字串,因為字串是不可變的。

示例

反轉陣列中的元素

以下示例建立一個名為 `items` 的陣列,其中包含三個元素,然後反轉該陣列。呼叫 `reverse()` 會返回對反轉後的陣列 `items` 的引用。

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

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

reverse() 方法返回對同一陣列的引用

reverse() 方法返回對原始陣列的引用,因此修改返回的陣列也會修改原始陣列。

js
const numbers = [3, 2, 4, 1, 5];
const reversed = numbers.reverse();
// numbers and reversed are both in reversed order [5, 1, 4, 2, 3]
reversed[0] = 5;
console.log(numbers[0]); // 5

如果您希望 `reverse()` 不修改原始陣列,而是返回一個像其他陣列方法(例如 map())一樣的淺複製陣列,請使用 toReversed() 方法。或者,您可以在呼叫 `reverse()` 之前進行淺複製,方法是使用展開語法Array.from()

js
const numbers = [3, 2, 4, 1, 5];
// [...numbers] creates a shallow copy, so reverse() does not mutate the original
const reverted = [...numbers].reverse();
reverted[0] = 5;
console.log(numbers[0]); // 3

在稀疏陣列上使用 reverse()

呼叫 `reverse()` 後,稀疏陣列仍然是稀疏的。空位會被複制到它們各自的新索引處,並保持為空位。

js
console.log([1, , 3].reverse()); // [3, empty, 1]
console.log([1, , 3, 4].reverse()); // [4, 3, empty, 1]

在非陣列物件上呼叫 reverse()

reverse() 方法會讀取 `this` 的 `length` 屬性。然後,它會遍歷 `0` 到 `length / 2` 之間的每個整數鍵屬性,並交換兩端對應的索引,刪除任何目標屬性(如果源屬性不存在)。

js
const arrayLike = {
  length: 3,
  unrelated: "foo",
  2: 4,
  3: 33, // ignored by reverse() since length is 3
};
console.log(Array.prototype.reverse.call(arrayLike));
// { 0: 4, 3: 33, length: 3, unrelated: 'foo' }
// The index 2 is deleted because there was no index 0 present originally
// The index 3 is unchanged since the length is 3

規範

規範
ECMAScript® 2026 語言規範
# sec-array.prototype.reverse

瀏覽器相容性

另見