Array.prototype.toSorted()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2023.
Phương thức toSorted() của các đối tượng Array là phiên bản sao chép của phương thức sort(). Nó trả về một mảng mới với các phần tử được sắp xếp theo thứ tự tăng dần.
Cú pháp
toSorted()
toSorted(compareFn)
Tham số
compareFnOptional-
Hàm xác định thứ tự của các phần tử. Nếu bị bỏ qua, các phần tử mảng được chuyển đổi thành chuỗi, sau đó được sắp xếp theo giá trị điểm mã Unicode của từng ký tự. Xem
sort()để biết thêm thông tin.
Giá trị trả về
Một mảng mới với các phần tử được sắp xếp theo thứ tự tăng dần.
Mô tả
Xem sort() để biết thêm thông tin về tham số compareFn.
Khi được dùng trên mảng thưa, phương thức toSorted() lặp qua các vị trí trống như thể chúng có giá trị undefined.
Phương thức toSorted() 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.
Ví dụ
>Sắp xếp một mảng
const months = ["Mar", "Jan", "Feb", "Dec"];
const sortedMonths = months.toSorted();
console.log(sortedMonths); // ['Dec', 'Feb', 'Jan', 'Mar']
console.log(months); // ['Mar', 'Jan', 'Feb', 'Dec']
const values = [1, 10, 21, 2];
const sortedValues = values.toSorted((a, b) => a - b);
console.log(sortedValues); // [1, 2, 10, 21]
console.log(values); // [1, 10, 21, 2]
Để biết thêm ví dụ sử dụng, xem sort().
Sử dụng toSorted() trên mảng thưa
Các vị trí trống được sắp xếp như thể chúng có giá trị undefined. Chúng luôn được sắp xếp vào cuối mảng và compareFn không được gọi cho chúng.
console.log(["a", "c", , "b"].toSorted()); // ['a', 'b', 'c', undefined]
console.log([, undefined, "a", "b"].toSorted()); // ["a", "b", undefined, undefined]
Gọi toSorted() trên đối tượng không phải mảng
Phương thức toSorted() đọc thuộc tính length của this. Sau đó nó thu thập tất cả các thuộc tính có khóa nguyên trong phạm vi 0 đến length - 1, sắp xếp chúng, và ghi vào một mảng mới.
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
3: 3, // ignored by toSorted() since length is 3
};
console.log(Array.prototype.toSorted.call(arrayLike));
// [4, 5, undefined]
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.tosorted> |