Array.prototype.reverse()
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"]
語法
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 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()。
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()` 後,稀疏陣列仍然是稀疏的。空位會被複制到它們各自的新索引處,並保持為空位。
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` 之間的每個整數鍵屬性,並交換兩端對應的索引,刪除任何目標屬性(如果源屬性不存在)。
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 |
瀏覽器相容性
載入中…