Re: [問題] 用 JavaScript 實作二維陣列的分頁排序

看板Web_Design作者 (冒牌費大公)時間17年前 (2009/03/19 23:53), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
Array.sort可以傳一個排序函數給他,他就會按照這個排序函數內建的邏輯來做排序 我寫一個簡單的二維陣列排序方法: <script> var arr = []; arr[0] = []; arr[0][0] = 3;arr[0][1] = 2; arr[0][2] = 5; arr[1] = []; arr[1][0] = 7;arr[1][1] = 14; arr[1][2] = 1; arr[2] = []; arr[2][0] = 6;arr[2][1] = 9; arr[2][2] = 7; function showarray(a) { var str = ""; for(var i=0; i<a.length; i++) { str += a[i].toString() + "\n"; } alert(str); } showarray(arr); function sortarray(arr, col, func) { var ret = arr.sort(func(col)); showarray(ret); } sortarray(arr, 1, function(col){ return function(b,a){ return a[col]-b[col]; }; }); sortarray(arr, 1, function(col){ return function(a,b) { return a[col]-b[col]; }; }); </script> showarray函數用來顯示二維函數,這樣看起來會比較清楚。 sortarray函數幫忙你作排序然後顯示,傳給他要排序的二維陣列,要排序的欄位以及 排序函數,他就會根據指定的欄位將傳入的陣列使用傳入的排序函數做排序 為了在sortarray外定義的函數也能抓到欄位變數,所以我傳入的函數會return真正要 排序的函數。這樣函數在sortarray外定義但是可以透過closure抓到col變數。 而排序函數的結構很簡單,他會依序傳入(舉例)a b兩個參數,如果返回值小於0,表示 b應該排在a前面;等於0順序不變;大於0表示a的順序應該在b的前面。 我的例子裡面先用降冪,在用升冪做數字的排序,然後把排序的結果顯示出來。 -- Sapere Aude! 這就是啟蒙運動的口號! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.166.83

03/20 17:50, , 1F
請問排序函數裡的 col 變數要傳什麼進去呢?
03/20 17:50, 1F

03/20 17:50, , 2F
另外如果想要多欄排序 怎麼辦? 另外還有分頁...
03/20 17:50, 2F
文章代碼(AID): #19mcf_7z (Web_Design)
文章代碼(AID): #19mcf_7z (Web_Design)