我想排序地址數組。在我的陣列上使用.sort()
方法似乎很簡單。使用Javascript對地址數組排序
但是...... 試看看這裏:https://jsfiddle.net/ytuzr918/
的.sort()
方法排序完美字母(至少我認爲它)。然而,我的地址在數字後面有數字和更多的字母。
那麼有沒有一種方法來排序數組「正確」,可能通過原型的排序方法?
我想排序地址數組。在我的陣列上使用.sort()
方法似乎很簡單。使用Javascript對地址數組排序
但是...... 試看看這裏:https://jsfiddle.net/ytuzr918/
的.sort()
方法排序完美字母(至少我認爲它)。然而,我的地址在數字後面有數字和更多的字母。
那麼有沒有一種方法來排序數組「正確」,可能通過原型的排序方法?
您可以提供一個比較功能Array.prototype.sort()
。
從here適應了答案:在JavaScript
var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a,b) {
var aA = a.replace(reA, "");
var bA = b.replace(reA, "");
if(aA === bA) {
var aN = parseInt(a.replace(reN, ""), 10);
var bN = parseInt(b.replace(reN, ""), 10);
return aN === bN ? 0 : aN > bN ? 1 : -1;
} else {
return aA > bA ? 1 : -1;
}
}
console.log(addresses.sort(sortAlphanum));
數組排序方法使用一個任選的參數,它是一個比較功能。您可以根據您的要求定義此比較功能。
arr.sort([的compareFunction])
的compareFunction(可選)。指定一個定義排序順序的函數。如果省略,則根據每個元素的字符串 轉換,根據每個 字符的Unicode代碼點值對數組進行排序。
查看Mozilla Developer Network瞭解更多詳情。
這是.sort()
函數的非常常見的排序。你可以做的是傳遞方法你自己的自定義比較函數,以便它將使用它來確定排序順序。
addresses.sort(function (a, b) {
var val_a = Number.parseInt(a.replace('Nordmarksvej ', ''));
var val_b = Number.parseInt(b.replace('Nordmarksvej ', ''));
if (val_a === val_b) {
return 0;
}
return val_a > val_b ? 1 : -1
});