sort方法:返回一个元素已经进行排序的array对象。
arrayobj.sort(sortfunction)
sort函数将array对象进行适当的排序,在执行过程中并不会创建新的array对象。
【说明】sort函数是对原有的数组进行排序,返回的也是排序之后的原有的数组对象。
接下里写一个例子
<script>
var array[1,4,5,7]
a.sort();
alert(a);
script>
输出结果:1,4,5,7
大家可以看到,输出的结果正好是从小到大的顺序排列的。接下来我把数据改变一下。
<script>
var array[5,41,7,18]
a.sort();
alert(a);
script>
输出结果:18,41,5,7
结果显示并没金进行排序。那么为什么会出错?
默认情况下,sort函数是按照ASCII字符排序。
实际上。电脑上显示的并不是我们输进去的数值,这里有一个编码。
如果我们在是电脑上输入a,那么在电脑上显示的是97,然后97再转换成二进制。
常用的ASCII字符对应
- a——97
- A——65
- 0——48
- 1——49
按照上面以此类推,2在ASCII中就是49,b就是98,B就是66。
再回到上面的例子,为什么会输出18,41,5,7呢?
原来在ASCII字符排序中,是对应为相比较。18和5相比,实际上就是1和5相比,因为5只有一位数,所以只比较第一位。因为1<5,所以出现了错误的答案。
那么如何解决问题呢?
上面有提到过,如果省略参数,将默认为ASCII字符排序,简而言之,就是有了参数,就不是默认为ASCII字符排序了。
接下里写一个有参数的实例
<script>
sort a=[5,41,7,18];
function paixu(m,n)
{
if(m>n)
return 1;
else if(mreturn -1;
else
return 0;
}
a.sort(paixu);
alert(a);
script>
显示结果:5,7,18,41
sort接受了排序这个函数为参数,那么它就会依据排序这个函数进行排序,不再依据ASCII字符编码来排序了。
有了参数之后如何排序?
【解释】首先。,将5和41传值给m和n。那么比较5和41,这时候,5是小于41的,返回-1,sort就依据这个返回值,负数就认为前面的数小于后面的数,即5<41。
上面的比较容易理解,接下里写一个比较简单的排序。
<script>
sort a=[5,41,7,18];
function paixu(m,n)
{
return m-n;
}
a.sort(paixu);
alert(a);
script>
输出结果:5,7,18,41
排序问题就介绍到这里,希望我的文章可以帮到你。