数组方法- sort 用法
sort
sort()
是数组(Array)对象的一部分,属于数组的原生方法之一。数组是 JavaScript 中常用的数据结构,通过数组可以存储和操作多个值。
sort()
方法属于数组的修改方法,它会原地改变数组的顺序,并返回排序后的数组(修改原数组!!!)
JavaScript 的 sort()
方法用于对数组进行排序。该方法可以接收一个可选的排序比较函数作为参数,来决定元素的排序顺序。
底层实现
sort()
方法的具体底层实现可能因不同的 JavaScript 引擎而有所不同。一般情况下,现代的 JavaScript 引擎使用一种称为“快速排序”的算法来对数组进行排序。快速排序是一种分治算法,通过递归地拆分数组并交换元素来完成排序。
在某些特殊情况下(例如一些浏览器的旧版本中),快速排序可能会被替换为其他排序算法,如插入排序或合并排序。
Array.prototype.sort() 方法
sort()
方法在数组对象的原型链上,用于对数组的元素进行排序。默认情况下,sort()
方法将数组元素转换为字符串并按照 Unicode 顺序进行排序。
语法
javascript
array.sort(compareFunction);
compareFunction
(可选):用于确定排序顺序的比较函数。如果省略,元素按照将其转换为的字符串的 Unicode 代码点进行排序。
比较函数 compareFunction
的返回值
- 如果希望
a
在排序后排在b
之前,则比较函数应该返回一个负数。 - 如果希望
a
在排序后排在b
之后,则比较函数应该返回一个正数。 - 如果希望
a
和b
保持不变相对位置,则比较函数应该返回 0。
示例
javascript
const numbers = [4, 2, 5, 1, 3];
// 升序排序
numbers.sort((a, b) => a - b);
console.log(numbers); // 输出: [1, 2, 3, 4, 5]
// 降序排序
numbers.sort((a, b) => b - a);
console.log(numbers); // 输出: [5, 4, 3, 2, 1]
在上面的示例中,比较函数 (a, b) => a - b
控制升序排序,(a, b) => b - a
控制降序排序。比较函数可以根据需要自定义,以实现不同的排序规则。
总结
sort 默认从小到大排序:
a-b 为负数则 a 小,故 a 在前
a-b 为正数则 a 在后
a-b 为 0 则顺序不变
::: sort