首頁  >  文章  >  web前端  >  JavaScript物件陣列的排序處理方法_javascript技巧

JavaScript物件陣列的排序處理方法_javascript技巧

WBOY
WBOY原創
2016-05-16 15:35:531339瀏覽

本文實例講述了JavaScript物件陣列的排序處理方法。分享給大家參考,具體如下:

javascript的陣列排序函數 sort方法,預設是依照ASCII 字元順序進行升序排列。
arrayobj.sort(sortfunction);

參數:sortFunction

可選項。是用來決定元素順序的函數的名稱。如果這個參數被省略,那麼元素將會依照 ASCII 字元順序升序排列。

sort 方法將 Array 物件進行適當的排序;執行過程中並不會建立新的 Array 物件。

如果為 sortfunction 參數提供了一個函數,那麼函數必須傳回下列值之一:

負值,如果傳遞的第一個參數比第二個參數小。
零,如果兩個參數相等。
正值,如果第一個參數比第二個參數大。

以上的方法在一維的排序還是很方便的,但像SQL語句中的ORDER BY 一樣的多鍵值排序由怎麼做呢?

多維數組的多鍵值排序,則需要複雜一些,但不需要用循環解決。實際解決的道理是一樣的 。

數字:

以下的範例是將數字的多維數組依照第5列,第9列,第3列的順序排序,像SQL語句中的ORDER BY col5,col9,col7。數字的時候可以直接兩個項目相減,以結果作為回傳值即可。

<script language=javascript>
 var myArray = new Array();
 for(var i=0;i<10;i++ ){
 myArray[i]=new Array();
 myArray[i][0]=Math.floor(Math.random()*10); 
 myArray[i][1]=Math.floor(Math.random()*10);
 myArray[i][2]=Math.floor(Math.random()*10);
 myArray[i][3]=Math.floor(Math.random()*10);
 myArray[i][4]=Math.floor(Math.random()*10);
 myArray[i][5]=Math.floor(Math.random()*10);
 myArray[i][6]=Math.floor(Math.random()*10);
 myArray[i][7]=Math.floor(Math.random()*10);
 myArray[i][8]=Math.floor(Math.random()*10);
 }
 myArray.sort(
   function(x, y) {
    if(x[4]!=y[4]){
      return x[4]-y[4];
    } else if(x[8]!=y[8]){
      return x[8]-y[8];
    } else if(x[6]!=y[6]){
      return x[6]-y[6];
    } else {
      return 1;
    }
  }
  );
 for(var i=0;i<myArray.length;i++ )...{
 document.write(myArray[i].join(",") + "<br/>");
 }
</script>

字符:

字元的時候sortFunction中的項目不能像數字一樣直接相減,需要呼叫str1.localeCompare( str2 )方法來作比較,從而滿足回傳值。以下是多維數組的第1,2列作排序的情況。

function sortFunction(array) {
 return array.sort( function(x, y) ...{
 return (x[0]==y[0])&#63;(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0]))
 });
}

因此arrayObject.sort( sortFunction )的排序功能還是很強大的,終於能夠實現了SQL語句中的ORDER BY 一樣的功能。

希望本文所述對大家JavaScript程式設計有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn