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 |
浏览器兼容性
加载中…