Array.sort

数组排序函数,经常使用。(抱歉,我没用过,如果你不问,我是想不到排序用这个函数的 。工作中用到数组排序函数时,都是用封装好的排序函数)

不过。。为啥会想到这个函数,是因为群里一个人的面试题是对一个数组进行随机排序

实现方法:

aa.sort(()=>0.5-Math.random())
// 解释:  Math.random()生成0~1 的数, 0.5- 生成的这个数,只会有三种情况 (>0 , =0 , <0) 完成了随机排序功能

一句话说明

  • Sort会修改原数组,谨慎使用
  • 实参是一个函数,函数的返回值为一个数字,负数向前排;相等则不动;大于向后排。

MDN链接

使用语法

arr.sort([compareFunction])

参数:

如果没有 compareFunction 参数,会将元素转为字符串去逐位比较 (9 在 80 之前),从小到大

  • compareFunction 可选
    用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。
    • firstEl
      第一个用于比较的元素。
    • secondEl
      第二个用于比较的元素
aa.sort((a,b)=>a-b)  // 从小到大
返回值

一个数组,并且对原数组也执行了相应操作

v8 引擎代码

刚巧,这个函数的 v8的代码我看过一点,所以这里也就列出来了
github/v8/v8
从这个文件的第 712 行可以看到 For short (length <= 22) arrays, insertion sort is used for efficiency. ,也就是说,如果数组数量 小于23个,采用 插入排序的方式 如果 大于22个,会采用快速排序方式

你可能感兴趣的:(Array.sort)