Array.prototype.reverse()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức reverse() của các đối tượng Array đảo ngược mảng tại chỗ và trả về tham chiếu đến cùng mảng đó, phần tử đầu tiên của mảng trở thành phần tử cuối cùng, và phần tử cuối cùng trở thành phần tử đầu tiên. Nói cách khác, thứ tự các phần tử trong mảng sẽ được đảo lại so với trước đây.
Để đảo ngược các phần tử trong mảng mà không thay đổi mảng gốc, dùng toReversed().
Try it
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"]
Cú pháp
reverse()
Tham số
Không có.
Giá trị trả về
Tham chiếu đến mảng gốc, giờ đã được đảo ngược. Lưu ý rằng mảng được đảo ngược tại chỗ, và không có bản sao nào được tạo.
Mô tả
Phương thức reverse() hoán vị các phần tử của đối tượng mảng gọi tại chỗ, thay đổi mảng và trả về tham chiếu đến mảng.
Phương thức reverse() bảo tồn các ô trống. Nếu mảng nguồn là thưa, các chỉ mục tương ứng mới của các ô trống sẽ bị xóa và cũng trở thành các ô trống.
Phương thức reverse() là phương thức tổng quát. Nó chỉ yêu cầu giá trị this có thuộc tính length và các thuộc tính có khóa là số nguyên. Mặc dù chuỗi cũng là dạng giống mảng, phương thức này không phù hợp để áp dụng cho chúng vì chuỗi là bất biến.
Ví dụ
>Đảo ngược các phần tử trong mảng
Ví dụ sau tạo một mảng items chứa ba phần tử, sau đó đảo ngược mảng. Lời gọi đến reverse() trả về tham chiếu đến mảng items đã được đảo ngược.
const items = [1, 2, 3];
console.log(items); // [1, 2, 3]
items.reverse();
console.log(items); // [3, 2, 1]
Phương thức reverse() trả về tham chiếu đến cùng mảng
Phương thức reverse() trả về tham chiếu đến mảng gốc, vì vậy thay đổi mảng trả về cũng sẽ thay đổi mảng gốc.
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
Trong trường hợp bạn muốn reverse() không thay đổi mảng gốc, nhưng trả về một mảng shallow-copied như các phương thức mảng khác (ví dụ: map()), dùng phương thức toReversed(). Ngoài ra, bạn có thể sao chép nông trước khi gọi reverse(), bằng cách dùng cú pháp spread hoặc 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
Sử dụng reverse() trên mảng thưa
Mảng thưa vẫn thưa sau khi gọi reverse(). Các ô trống được sao chép sang các chỉ mục mới tương ứng của chúng như là các ô trống.
console.log([1, , 3].reverse()); // [3, empty, 1]
console.log([1, , 3, 4].reverse()); // [4, 3, empty, 1]
Gọi reverse() trên đối tượng không phải mảng
Phương thức reverse() đọc thuộc tính length của this. Sau đó nó truy cập từng thuộc tính có khóa số nguyên từ 0 đến length / 2, và hoán đổi hai chỉ mục tương ứng ở cả hai đầu, xóa bất kỳ thuộc tính đích nào mà thuộc tính nguồn không tồn tại.
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
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.reverse> |