sort排序以及隨機排序
阿新 • • 發佈:2018-01-17
pos fun 轉化 今天 undefined 副本 blog 若是 數組元素
今天來說一下數組中比較強大的排序方法sort。
sort()將在原數組上對數組元素進行排序,即排序時不創建新的數組副本。
如果調用方法sort()時沒有使用參數,將按字母順序(更為精確地說,是按照字符編碼的順序)對數組中的元素進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如果有必要的話),以便進行比較。
如果想按照別的順序進行排序,就必須提供比較函數,該函數要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數a和b,其返回值如下:
-
如果根據你的評判標準,a小於b,在排序後的數組中a應該出現在b之前,就返回一個小於0的值。
-
如果a等於b,就返回0。
-
如果a大於b,就返回一個大於0的值。
註意,數組中undefined的元素都排列在數組末尾。即使你提供了自定義的排序函數也是這樣,因為undefined值不會被傳遞給你提供的orderfunc。
舉例說明:
從小到大規律排序:
var arr=[1,3,45,64,43,32]; arr.sort(function(a,b){ return a-b; });//從小到大排序 console.log(arr); //[1,3,32,43,45,64]
從大到小規律排序:
var arr=[1,3,45,64,43,32]; arr.sort(function(a,b){ return b-a; });//從大到小排序 console.log(arr); //[64,45,43,32,3,1]
關於字符串的從小到大排序:
var arr1=[‘320px‘,‘640px‘,‘1120px‘,‘240px‘,‘35px‘]; arr1.sort(function(a,b){ return parseInt(a)-parseInt(b);//是字符串一定先轉變為number類型比較,否則按照字符串的排序進行 });//從小到大排序 console.log(arr1); //["35px", "240px", "320px", "640px", "1120px"]
註意:真正的字符串排序會按照字符串的編碼大小進行排序,而我所說的字符串排序是指字符串轉化為number類型進行排序。當然若是從大到小的排序也是要轉化格式然後b-a進行。這個就不多說了!
接下來說一下無規律排序,即隨機排序的方法,來看代碼:
//隨機排序 var arr2=[1,2,3,4,5,6,7,8,9]; arr2.sort(function(a,b){ return Math.random()-0.5; }); console.log(arr2); //每次刷新一次,隨機排序將會變化一次
若是用隨機排序的話,必須要用到Math.random()這個方法,當然減掉的0.5也可更改為0到1之間任何數字。
好了,關於數組帶的排序,今天就說到這裏!
sort排序以及隨機排序