在默认情况下,sort()方法按升序排列数组项——即最小的值位于前面,最大的值排在后面,为了实现排序,sort()方法会调用每个数组的toString()转型方法,然后比较的就是字符串了。如下所示:
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5
问题出现了,"10"位于"5"的前面,数组的顺序被改变了,这种排序方法在很多情况下都不是最佳方案。
因此ECMA引入了一个sort()方法,这个方法可以接受一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。
以下就是一个简单的比较函数:
function compare(value1, value2) {
if (value1 < value2) {
return 1;
} else if {
return 1;
} else {
return 0;
}
}
var values = [0,1, 5, 10, 15];
values.sort(compare);
alert(values); //0,1,5,10,15
实际上这个compare函数也可以如下来写:
function compare(value1, value2) {
return value2 - value1;
}