定義和用法
sort() 方法用於對數組的元素進行排序。
語法
arrayObject.sort(sortby)
參數sortby:可選。規定排序順序。必須是函數。
返回值
對數組的引用。請注意,數組在原數組上進行排序,不生成副本。
普通數組排序:
js中用方法sort()為數組排序。sort()方法有一個可選參數,是用來確定元素順序的函數。如果這個參數被省略,那么數組中的元素將按照ASCII字符順序進行排序。如:
字母A、B的ASCII值分別為65、66,而a、b的值分別為97、98,所以上面輸出的結果是 ["A", "B", "a", "b"]
如果一個數組元素是數字,此時還是用sort()為數組排序,先看看效果如何:
怎么沒有起到效果(按大小排序),其實,sort方法會調用每個數組項的toString()方法,得到字符串,然后再對得到的字符串進行排序。雖然數值15比3大,但在進行字符串比較時"15"則排在"3"前面(ASCII字符順序)。顯然,這種結果不是我們想要的,這時,sort()方法的參數就起到了作用,我們把這個參數叫做比較函數。
比較函數接收兩個參數,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等則返回0,如果第一個參數應該位於第二個之后則返回一個正數。
數組對象排序:
數組項是對象,需要根據數組項的某個屬性對數組進行排序,要怎么辦呢?其實和前面的比較函數也差不多
下面這個是我項目的實例:
此時想PX字段大小排序,我是這樣做的:
sort()函數的應用,JS 中打亂數組
JS中,要打亂數組有很多方法,網上流傳一個國外人寫的方法,我認為是最精簡的了(下面是項目里應用的例子,登錄界面畫H5lock):
function randomsort(a, b) {
return Math.random()>.5 ? -1 : 1; //用Math.random()函數生成0~1之間的隨機數與0.5比較,返回-1或1
}
this.number_arr = [0,1,2,3,4,5,6,7,8,9];
this.number_random_arr = this.number_arr.sort(randomsort);