遇到一個奇葩問題,數組排序在chrome
瀏覽器下沒有問題,而在IE
下不生效。查了下資料,原來是寫法有誤。node
原來寫法:chrome
var arr = [300, 20, 10, 1, 2]; arr.sort(function(a, b){ return a > b; });
指望返回值是[300, 20, 10, 2, 1]
(chrome下),結果是[300, 20, 10, 1, 2]
(IE下)數組
比較函數的返回值應該是數字(正數降序,負數升序,0不動),而我寫成了bool,致使排序失敗。chrome下可能作過兼容處理。瀏覽器
最蛋疼的是,在我寫這篇文章時,新版本chrome恢復了,與IE效果成了同樣的,而本地nodejs運行的版本(v10.0.0)還是舊的。函數
若是想按照其餘標準進行排序,就須要提供比較函數,該函數要比較兩個值,而後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具備兩個參數 a 和 b,其返回值以下:測試
通過測試編碼
比較函數的返回結果若是不是數字(Boolean或者NaN或者String或者Object),都不會排序。
總結下:code
升序排列
,返回值能夠簡寫爲:a-b
降序排序
,返回值能夠簡寫爲:b-a