数组的sort方法
今天在看《JavaScript高级程序设计第三版》时,学到了数组的sort方法。知道这个方法,但是一直没仔细研究过,这次发现,它是把数组内的值用toSting()变为字符串再进行比较,这样的话,无法保证排出来的顺序的正确性,比如
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5
因为数值 5 虽然小于 10, 但在进行字符串比较时, "10" 则位于 "5" 的前面, 于是数组的顺序就被修改了。
如何让它一定准确呢,书上给了个很好的解决方法,原来,sort()方法还可以带参数:
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
var values = [0, 1, 5, 10, 15];
values.sort(compare);
alert(values); //0,1,5,10,15
这时,改变compare()函数可以达到降序排序的效果。
欢迎大家来浏览我的博客,如发现我有写错的地方,欢迎交流指正。