在默認(rèn)情況下,sort()方法按升序排列數(shù)組項(xiàng)——即最小的值位于前面,最大的值排在后面,為了實(shí)現(xiàn)排序,sort()方法會調(diào)用每個(gè)數(shù)組的toString()轉(zhuǎn)型方法,然后比較的就是字符串了。如下所示:
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5
問題出現(xiàn)了,"10"位于"5"的前面,數(shù)組的順序被改變了,這種排序方法在很多情況下都不是最佳方案。
因此ECMA引入了一個(gè)sort()方法,這個(gè)方法可以接受一個(gè)比較函數(shù)作為參數(shù),以便我們指定哪個(gè)值位于哪個(gè)值的前面。
以下就是一個(gè)簡單的比較函數(shù):
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
實(shí)際上這個(gè)compare函數(shù)也可以如下來寫:
function compare(value1, value2) {
return value2 - value1;
}