一、语法
1 | arr.sort([compareFunction]) |
如果没有指明 compareFunction
,元素会按照转换为字符串的诸个字符的Unicode
位点进行排序。
如果指明 compareFunction
,数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
如果
compareFunction(a, b)
小于 0 ,那么 a 会被排列到 b 之前如果
compareFunction(a, b)
等于 0 , a 和 b 的相对位置不变- 备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守
如果
compareFunction(a, b)
大于 0 , a 会被排列到 b 之后
二、内部排序
V8 引擎 sort 函数只给出了两种排序分别是: InsertionSort
和QuickSort
- 数组长度小于等于10的用插入排序
InsertionSort
- 比10大的数组则使用快速排序
QuickSort
三、特定序列排序
1 | ['d', 'a', 'b', '2', '1', '3'].sort((x, y) => { |
四、源码
1 | function InnerArraySort(array, length, comparefn) { |