Skip to content
📈0️⃣

数组方法- 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 之后,则比较函数应该返回一个正数。
  • 如果希望 ab 保持不变相对位置,则比较函数应该返回 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

参考