Array.prototype.reverse()
reverse()
方法是 Array
实例的方法,它就地反转数组,并返回对同一数组的引用,第一个数组元素现在成为最后一个,最后一个数组元素成为第一个。换句话说,数组中元素的顺序将转向与之前陈述相反的方向。
要反转数组中的元素而不修改原始数组,请使用 toReversed()
。
试一试
语法
js
reverse()
参数
无。
返回值
对现在已反转的原始数组的引用。请注意,数组是就地反转的,并且没有创建副本。
描述
示例
反转数组中的元素
以下示例创建了一个名为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 语言规范 # sec-array.prototype.reverse |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。