1. 程式人生 > 實用技巧 >javascript sort()對陣列中的元素進行排序詳解

javascript sort()對陣列中的元素進行排序詳解

javascript sort()可以對陣列中的元素進行排序,

語法格式:arrayObject.sort(sortby)

arrayObject是陣列物件,sortby為可選項,用來確定元素順序的函式的名稱,如果這個引數被省略,那麼元素將按照ASCII字元順序進行升序排列。

在沒有使用比較函式進行排序時,sort方法是按字元的ASCII值進行排序的,先從第一個字元比較,如果第一個字元相等,再比較第二個字元,以此類推。

對於數值型資料,如果按照字元比較,得到的結果可能並不是我們想要的,因此需要藉助比較函式。比較函式有兩個引數,分別代表每次排序時的兩個陣列項。sort()排序時每次比較兩個陣列項都會執行這個引數,並把兩個比較的陣列項做為引數傳遞給這個函式。當函式返回值大於0時就交換兩個陣列的順序,否則就不交換,即函式返回值小於0,表示升序排列,函式返回值大於0,表示降序排列。

<!DOCTYPE html>
<html>
<head>
  <title>對陣列中的元素進行排序</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script type="text/javascript">
    var x = new Array(1,20,8,12,6,7);  //建立陣列
    document.write("排序前陣列:"+x.join(",")+"<p>"); //輸出陣列元素
    x.sort();  //按字元升序排列陣列
    document.write("沒有使用比較函式排序後陣列:"+x.join(",")+"<p>");   //輸出排序後陣列
    x.sort(asc);    //有比較函式的升序排列
    /*升序比較函式*/
    function asc(a,b){
      return a-b;
    }
    document.write("排序升序後陣列:"+x.join(",")+"<p>");  //輸出排序後的陣列
    x.sort(des);  //有比較函式的降序排列
    /*降序比較函式*/
    function des(a,b){
      return b-a;
    }
    document.write("排序降序後陣列:"+x.join(",")); //輸出排序後陣列
 </script>
</head>
<body>
</body>
</html>

以上例項程式碼大家可以測試下,感謝大家的學習和對碼農教程的支援。