[爆卦]javascript二維陣列排序是什麼?優點缺點精華區懶人包

為什麼這篇javascript二維陣列排序鄉民發文收入到精華區:因為在javascript二維陣列排序這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者fillano (冒牌費大公)看板Web_Design標題Re: [問題] 用 JavaScri...


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
asklove:請問排序函數裡的 col 變數要傳什麼進去呢? 03/20 17:50
asklove:另外如果想要多欄排序 怎麼辦? 另外還有分頁... 03/20 17:50

你可能也想看看

搜尋相關網站