ES3 的方法
- sort 不会按照数字大小进行排序
- 按照utf-16的编码顺序来进行排序 ```javascript var arr = [5, 3, 1, 2, 4]; var newArr = arr.sort(); // 返回原数组的引用, 不进行数组引用赋值。 console.log(newArr === arr);//true
// 原地算法 // V8 arr.length <= 10 插入排序 // arr.length >10 快速排序 // Mozilla 归并排序 // Webkit c++ QSort 快速排序的理念
var arr = [5, 3, 1000, 1, 6]; console.log(arr.sort());
var strArr = [‘a’, ‘b’, ‘d’]
var arr = [“Alibaba”,”Tencent”,”Baidu”,”NetEase”];
/**
- sort 不会按照数字大小进行排序
- toString -> 数组元素 ->字符串
- DOMString -> UTF-16字符串实现 -> 映射到String ->构建字符串
- string -> UTF-16字符串 -> String/DOMString 的实例
- 按照utf-16的编码顺序来进行排序 */
/**
- 为什么要转成字符串?
- 如果是仅限一种类型的排序,sort 功能性太弱。
- 字符串和字符编码集合结合在一起的排序规则
- 可排序的范围就大 */
// sort 一个参数(可选) // compareFunction(a, b);比较函数方法,FElement,SElement;
var arr = [5, 1, 2, 3, 4, 6, 3, 3]; console.log(arr.sort(function(a, b){ // 如果再函数内部没有写规则就不会进行排序 // a => 1, b => 5; console.log(a, b); /**
* return 负数 a在b前面 升序
* return 正数 a在b后面 降序
* return 0 不进行任何排序
*/
}))
// 非ASCII字符排序 localeCompare来比较 var arr = [“大”,”家”,”好”];
console.log(arr.sort(function(a, b){ return a.localeCompare(b); }))
// sort 的回调函数如果负载很高会影响sort的性能。 // 利用数组的映射可以修改。
```