通常咱們使用sort函數進行數組的排序,sort()方法有一個可選參數,是用來肯定元素順序的函數。若是這個參數被省略,那麼數組中的元素將按照ASCII字符順序進行排序。如:javascript
var arr = ["a", "b", "A", "B"]; arr.sort(); console.log(arr);//["A", "B", "a", "b"]
若是數組元素是數字呢,結果會是怎樣?java
var arr = [15, 8, 25, 3]; arr.sort(); console.log(arr);//[15, 25, 3, 8]
結果是 [15, 25, 3, 8] 。其實,sort方法會調用每一個數組項的toString()方法,獲得字符串,而後再對獲得的字符串進行排序。雖然數值15比3大,但在進行字符串比較時"15"則排在"3"前面。顯然,這種結果不是咱們想要的,這時,sort()方法的參數就起到了做用,咱們把這個參數叫作比較函數。比較函數接收兩個參數,若是第一個參數應該位於第二個以前則返回一個負數,若是兩個參數相等則返回0,若是第一個參數應該位於第二個以後則返回一個正數。例子:數組
var arr = [23, 9, 4, 78, 3]; arr.sort(function(a,b){ return b-a; }); console.log(arr); // [78,23,9,4,3]
a,b表示數組中的任意兩個元素,若return > 0 b前a後;reutrn < 0 a前b後;a=b時存在瀏覽器兼容。a-b輸出從小到大排序,b-a輸出從大到小排序。
瀏覽器