我想排序一個多維數組。 什麼我應該把JavaScript .sort()函數的回調,使其行爲像MySQL的順序?如何使在JavaScript中的排序功能行爲像mysql順序
例子。 通過,結果使用mysql命令:
acx,
acx abx,
acx acx,
S&P/ASX 20
使用JS排序功能,結果是:
S&P/ASX 20,
acx,
acx abx,
acx acx
謝謝。
我想排序一個多維數組。 什麼我應該把JavaScript .sort()函數的回調,使其行爲像MySQL的順序?如何使在JavaScript中的排序功能行爲像mysql順序
例子。 通過,結果使用mysql命令:
acx,
acx abx,
acx acx,
S&P/ASX 20
使用JS排序功能,結果是:
S&P/ASX 20,
acx,
acx abx,
acx acx
謝謝。
問題是JS中的排序區分大小寫。爲了解決這個問題,提供一個函數作爲sort
的參數,它應該比較字符串的上層(或下層)版本。
function cmp(x, y) {
return x > y ? 1 : x < y ? -1 : 0;
}
a = ["S&P/ASX 20","acx", "acx abx","acx acx"]
a.sort(function(x, y) {
return cmp(x.toUpperCase(), y.toUpperCase())
})
它工作:)非常感謝。我沒有發現問題只是js區分大小寫。愚蠢的我。 – user2020835 2013-03-26 07:25:14
@ user2020835:沒問題))順便說一句,在MySQL中排序可能是任何方式,這取決於您使用的排序規則。 – georg 2013-03-26 07:30:50
目前尚不清楚您的多維度,但您的示例看起來像他們只是沒有區分大小寫的排序。
在任何情況下,要獲得定製行爲,你做的是傳遞一個函數爲sort
,用於比較的元素,返回-1,1或0。因此,例如:
yourArray.sort(function(a, b) {
a = a.toLowerCase();
b = b.toLowerCase();
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
});
如果你比較比較函數中的數組數組,您將比較a
和b
中給出的兩個陣列中的各個條目。
搜索'[javascript] string sort case''。 – 2013-03-26 07:11:44