数组排序方法有:冒泡排序、快速排序和sort()排序。
冒泡排序在前面文章中已经讲到,点击此处进行查看。
快速排序在前面文章中已经讲到,点击此处进行查看。
sort()排序是一种简单粗暴的数组排序方式。
基本语法:
Array.sort(fun);
其中参数fun是可选参数。
在对一个数组使用sort()方法,且没有传递任何参数时,Array数组中的元素将按照首字母的ASCII字符的顺序进行升序排序。
示例代码:
<script type="text/javascript">
var array_one = [17,24,45,31,50,46,63,96,3,7];
var array_two = ['you','tom','Ask',5,'go','answer','Say'];
console.log(array_one.sort());
console.log(array_two.sort());
</script>
打印出的结果为:
ASCII字符顺序为【数字0-9】——【大写字母A-Z】——【小写字母a-z】。
针对于上面arry_one中最后的排序结果也是根据首字母进行的排序。
所以如果想使用sort()方法对纯数字数组进行由小到大,或由大到小的排序是需要通过上面的可选参数fun来控制的。
fun表示一个可以提供返回值的函数。它的返回值必须是以下三个值之一:
①负值:表示第一个参数比第二个参数小;
②零:表示两个参数相等;
③正值:表示第一个参数比第二个参数大。
将array_one由小到大排序,示例代码如下:
<script type="text/javascript">
var array_one = [17,24,45,31,50,46,63,96,3,7];
array_one.sort(function compare(a,b){
return a-b;
});
for(var i = 0; i < array_one.length; i++){
document.write(array_one[i] + ',');
}
</script>
在页面中输出的信息为:
上面代码中的fun参数可以提取出来,代码为:
<script type="text/javascript">
function compare(a,b){
return a-b;
}
var array_one = [17,24,45,31,50,46,63,96,3,7];
array_one.sort(compare);
for(var i = 0; i < array_one.length; i++){
document.write(array_one[i] + ',');
}
</script>
其输出的结果与上面的输出结果完全一致。
如果想让数组从大到小排序,只需要将上面的【a-b】替换为【b-a】即可。