国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript實現多維數組多鍵值排序方法

2024-09-06 12:40:48
字體:
來源:轉載
供稿:網友

  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) ...{
    return (x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2])
  });
  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])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0]))
  });
}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林浩特市| 翁牛特旗| 阜城县| 威信县| 基隆市| 泰来县| 云梦县| 水富县| 巩义市| 广西| 游戏| 蒙山县| 莱芜市| 岑巩县| 台州市| 巴南区| 龙井市| 北碚区| 黎城县| 金山区| 远安县| 达日县| 通海县| 雷州市| 微山县| 修水县| 陈巴尔虎旗| 奎屯市| 上杭县| 朔州市| 潍坊市| 德昌县| 周至县| 综艺| 太原市| 福海县| 沅江市| 淳安县| 巴马| 射阳县| 万州区|