JavaScript Array toSorted()

定义和用法

toSorted() 方法按字母顺序对数组元素进行排序。

toSorted() 方法返回新数组。

toSorted() 方法不会覆盖原始数组。

toSorted() 方法是 sort() 方法的复制版本。

另请参阅:

Array sort() 方法

Array reverse() 方法

排序比较函数

按字母顺序排序对字符串效果很好("Apple" 排在 "Banana" 之前)。

但是,对数字排序可能会产生不正确的结果。

"25" 比 "100" 大,因为 "2" 比 "1" 大。

可以通过提供“比较函数”来解决此问题(见下面的例子)。

实例

例子 1

// 创建一个数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// 对数组进行排序
const fruits2 = fruits.toSorted();

亲自试一试

例子 2

排序后反转顺序:

// 创建一个数组
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// 对数组进行排序
const fruits2 = fruits.toSorted();

// 反转数组
fruits2.reverse();

亲自试一试

例子 3

使用排序函数按升序排序数字:

// 创建一个数组
const points = [40, 100, 1, 5, 25, 10];

// 对数组进行排序
let points2 = points.toSorted(function(a, b){return a - b});

亲自试一试

例子 4

按降序排序数字:

// 创建一个数组
const points = [40, 100, 1, 5, 25, 10];

// 对数组进行排序
let points2 = points.toSorted(function(a, b){return b - a});

亲自试一试

例子 5

查找最小值:

// 创建一个数组
const points = [40, 100, 1, 5, 25, 10];

// 按升序排序数字
let points2 = points.toSorted(function(a, b){return a - b});

let lowest = points2[0];

亲自试一试

例子 6

查找最大值:

// 创建一个数组
const points = [40, 100, 1, 5, 25, 10];

// 按降序排序数字
let points2 = points.toSorted(function(a, b){return b - a});

let highest = points2[0];

亲自试一试

例子 7

查找最大值:

// 创建一个数组
const points = [40, 100, 1, 5, 25, 10];

// 按升序排序数字
let points2 = points.toSorted(function(a, b){return a - b});

let highest = points2[points.length - 1];

亲自试一试

语法

array.sort(compareFunction)

参数

参数 描述
compareFunction

可选。定义排序顺序的函数。该函数应根据参数返回负值、零或正值:

function(a, b){return a-b}

当 sort() 比较两个值时,它会将这些值发送给比较函数,并根据返回的(负值、零、正值)对值进行排序。

举例:

排序函数会将 40 视为比 100 小的值。

当比较 40 和 100 时,sort() 调用函数 function(40, 100)。

函数计算 40 - 100,并返回 -60(负值)。

返回值

类型 描述
Array 排序后的新数组。

浏览器支持

toSorted() 是 ES2023 的特性。

自 2023 年 7 月起,所有现代浏览器均支持该方法:

Chrome Edge Firefox Safari Opera
Chrome 110 Edge 110 Firefox 115 Safari 16.4 Opera 96
2023 年 2 月 2023 年 2 月 2023 年 7 月 2023 年 3 月 2023 年 5 月