语法
js
toSorted()
toSorted(compareFn)
参数
compareFn可选-
一个用于确定元素顺序的函数。如果省略,数组元素将被转换为字符串,然后根据每个字符的 Unicode 码点值进行排序。有关更多信息,请参阅
sort()。
返回值
一个包含升序排序元素的新数组。
描述
有关 compareFn 参数的更多信息,请参阅 sort()。
在 稀疏数组 上使用时,toSorted() 方法会将空槽视作 undefined 值进行迭代。
toSorted() 方法是 通用 的。它只要求 this 值具有 length 属性和整数键属性。
示例
对数组进行排序
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]
有关更多使用示例,请参阅 sort()。
在稀疏数组上使用 toSorted()
空槽被视为 undefined 值进行排序。它们始终被排序到数组的末尾,并且不会为它们调用 compareFn。
js
console.log(["a", "c", , "b"].toSorted()); // ['a', 'b', 'c', undefined]
console.log([, undefined, "a", "b"].toSorted()); // ["a", "b", undefined, undefined]
在非数组对象上调用 toSorted()
toSorted() 方法读取 this 的 length 属性。然后,它会收集 0 到 length - 1 范围内的所有现有整数键属性,对它们进行排序,然后将它们写入一个新数组。
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]
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-array.prototype.tosorted |
浏览器兼容性
加载中…