Array的sort() 方法
參考JavaScript高級程序設計
在默認情況下,sort()方法按升序排列數(shù)組項--即最小的值位于最前面,最大的值排在最后面。為了實現(xiàn)排序,sort方法會調用每個數(shù)組項的toSting()轉型方法,然后比較得到的字符串,以確定如何排序。即使數(shù)組中每一項都是數(shù)值,sort()方法比較的也是字符串,如下所示:
var values = [0,1,5,10,15]; values.sort(); alert(values); //0,1,10,15,5可見,例子中的數(shù)組中值順序沒有問題,但sort()方法會根據(jù)字符串測試結果改變原來的順序。因為即使數(shù)值5小于10,但在進行字符串比較時,“10”位于“5”前面,于是數(shù)組的順序被修改了。 所以,這種排序方式在很多情況下都不是最佳方案。 因此sort()方法可以接收一個比較函數(shù)作為參數(shù),以便我們指定哪個值位于哪個值的前面。
比較函數(shù)接收兩個參數(shù),如果第一個參數(shù)應該位于第二個之前則返回一個負數(shù),如果兩個參數(shù)相等則返回0,如果第一個參數(shù)應該位于第二個參數(shù)之后則返回一個正數(shù)。以下是一個簡單的比較函數(shù):
function compare(value1,value2) {if (value1 < value2) {return -1;} else if (value1 > value2) {return 1;} else {return 0;} }這個函數(shù)可以適用于大多數(shù)數(shù)據(jù)類型,只要將其作為參數(shù)傳遞給sort()方法即可,如下:
var values = [0,1,5,10,15]; values.sort(compare); alert(values); //0,1,5,10,15將比較函數(shù)傳遞給sort()方法之后,數(shù)值保持了正確的升序。當然也可以通過比較函數(shù)產生降序排序結果,只要交換比較函數(shù)返回的值即可:
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); //15,10,5,1,0如果只是想反轉數(shù)組原來的順序,使用reverse()方法要更快些。
小練習
1、有一個數(shù)組包含字符串和數(shù)字,現(xiàn)在要升序排列數(shù)組,數(shù)字在字符串之前:
?
2、隨機排序一個數(shù)組
?
?
?
?
?
轉載于:https://www.cnblogs.com/blackwood/archive/2013/03/20/2968667.html
總結
以上是生活随笔為你收集整理的Array的sort() 方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中ApplicationCo
- 下一篇: 六个iPhone6不会火爆的理由