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

js
toSorted()
toSorted(compareFn)

Tham số

compareFn Optional

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()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

js
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.

js
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.

js
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

Khả năng tương thích với trình duyệt

Xem thêm