1. 程式人生 > >sort排序以及隨機排序

sort排序以及隨機排序

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排序以及隨機排序