JS Array.sort 数组排序最快的方法

文章作者:中山市飞娥软件工作室「Feiesoft.com」  浏览次数:5060 次  更新日期:2013-10-30

<script type="text/javascript">
//JS Array.sort 数组排序最快的方法:
//在JavaScript中,Array对象的sort([orderfunc])方法对数组元素排序效率是最好的,
//因此在实际项目中,如果无特别要求,尽量按用内置的排序方法array.sort()。
//在JavaScript中,Array对象的sort([orderfunc])方法对数组元素排序。
//功能:
//arr.sort()方法在原数组上对数组元素进行排序,即sort()方法可能改变原数组。
//如果arr.sort([orderfunc])没有提供可选的orderfunc参数,
//将按照英文字母顺序(准确的说是按照字符编码的顺序)对数组进行排序。
//要实现这点,首先应把数组元素转换成字符串,以便进行比较。
//如果按别的顺序排序,就必须提供一个比较函数。
//参数:
//orderfunc:函数句柄,指定按什么顺序进行排序,可选。
function asc(a,b){return a-b;}//从小到大
function desc(a,b){return b-a;}//从大到小
//==============================================================================================
//例1:
var arr = [10,200,1,-1,0,1000];
document.writeln("<hr>原数组:arr = [" + arr + "]");
//原数组:arr = [10,200,1,-1,0,1000]
arr.sort();
document.writeln("对原数组应用sort()方法后,原数组:arr = [" + arr + "]");
//对原数组应用sort()方法后,原数组:arr = [-1,0,1,10,1000,200]
arr.sort(desc);
//或arr.sort(function(a,b){return b-a;});
document.writeln("对原数组应用sort()方法后,原数组:arr = [" + arr + "]");
//对原数组应用sort(desc)方法后,原数组:arr = [1000,200,10,1,0,-1]
//==============================================================================================
//例2:
var arr = ["S","O","R","T"];
document.writeln("<hr>原数组:arr = [" + arr + "]");
//原数组:arr = [S,O,R,T]
arr.sort();
document.writeln("对原数组应用sort()方法后,原数组:arr = [" + arr + "]");
//对原数组应用sort()方法后,原数组:arr = [O,R,S,T]
//==============================================================================================
//例3:
var arr = ["one","two","three","four","five","six","seven","eight","nine","ten"];
document.writeln("<hr>原数组:arr = [" + arr + "]");
//原数组:arr = [one,two,three,four,five,six,seven,eight,nine,ten]
arr.sort();
document.writeln("对原数组应用sort()方法后,原数组:arr = [" + arr + "]");
//对原数组应用sort()方法后,原数组:
//arr = [eight,five,four,nine,one,seven,six,ten,three,two]
//==============================================================================================
//例4:
var arr = ["一","二","三","四","五","六","七","八","九","十"];
var unicode = [];
for(var i=0;i<arr.length;i++){
 unicode.push(arr[i].charCodeAt(0) + "(" + arr[i] + ")");
}
document.writeln("<hr>原数组:arr = [" + arr + "]");
//原数组:arr = [一,二,三,四,五,六,七,八,九,十]
document.writeln("原数组元素Unicod编码:unicode = [" + unicode + "]");
//原数组元素Unicod编码:
//unicode = [19968(一),20108(二),19977(三),22235(四),
//20116(五),20845(六),19971(七),20843(八),20061(九),21313(十)]
arr.sort();
document.writeln("对原数组应用sort()方法后,原数组:arr = [" + arr + "]");
//对原数组应用sort()方法后,原数组:arr = [一,七,三,九,二,五,八,六,十,四]
unicode.sort();
document.writeln("对原数组元素Unicod编码数组应用sort()方法后,
原数组:unicode = [" + unicode + "]");
//对原数组元素Unicod编码数组应用sort()方法后,原数组:
//unicode = [19968(一),19971(七),19977(三),20061(九),
20108(二),20116(五),20843(八),20845(六),21313(十),22235(四)]
</script>