文章目录
JavaScript 数组排序
数组排序
sort() 方法按字母顺序对数组进行排序:
示例
const fruit = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
反转数组
reverse() 方法反转数组中的元素:
示例
const fruit = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
通过组合 sort() 和 reverse(),您可以按降序对数组进行排序:
示例
const fruit = ["Banana", "Orange", "Apple", "Mango"];
fruit.sort();
fruit.reverse();
JavaScript 数组 toSorted() 方法
ES2023 添加了 toSorted() 方法,作为一种在不改变原始数组的情况下对数组进行排序的安全方法。
toSorted() 和 sort() 之间的区别在于,第一个方法创建一个新数组,保持原始数组不变,而最后一个方法会改变原始数组。
示例
const months = ["Jan", "Feb", "Mar", "Apr"];
const sorted = months.toSorted();
JavaScript 数组 toReversed() 方法
ES2023 添加了 toReversed() 方法,作为一种在不改变原始数组的情况下反转数组的安全方法。
toReversed() 和 reverse() 之间的区别在于,第一个方法创建一个新数组,保持原始数组不变,而最后一个方法会改变原始数组。
示例
const months = ["Jan", "Feb", "Mar", "Apr"];
const reversed = months.toReversed();
数字排序
默认情况下,sort() 函数将值排序为字符串。
这对字符串很有效(“Apple”排在“Banana”之前)。
如果将数字排序为字符串,则“25”大于“100”,因为“2”大于“1”。
因此,sort() 方法在对数字进行排序时会产生不正确的结果。
您可以通过提供比较函数来解决这个问题:
示例
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
使用相同的技巧对数组进行降序排序:
示例
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
比较函数
比较函数的目的是定义替代排序顺序。
比较函数应返回负值、零值或正值,具体取决于参数:
function(a, b){return a - b}
当 sort() 函数比较两个值时,它会将值发送到比较函数,并根据返回的(负值、零值、正值)对值进行排序。
如果结果为负数,则 a 排在 b 之前。
如果结果为正数,则 b 排在 a 之前。
如果结果为 0,则两个值的排序顺序不会发生任何变化。
示例:
比较函数比较数组中的所有值,每次比较两个值(a、b)。
当比较 40 和 100 时,sort() 方法会调用比较函数 (40, 100)。
该函数计算 40 - 100 (a - b),由于结果为负数 (-60),sort 函数会将 40 排序为小于 100 的值。
您可以使用此代码片段尝试按数字和字母顺序排序:

最低0.47元/天 解锁文章
1212

被折叠的 条评论
为什么被折叠?



