我有一个混合数组,我需要按数字、字母表然后按数字排序-
['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3']
我如何将其排序为:
['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3']
这是我尝试过的:
var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a, b) {
var AInt = parseInt(a.Field, 10);
var BInt = parseInt(b.Field, 10);
if (isNaN(AInt) && isNaN(BInt)) {
var aA = (a.Field).replace(reA, "");
var bA = (b.Field).replace(reA, "");
if (aA === bA) {
var aN = parseInt((a.Field).replace(reN, ""), 10);
var bN = parseInt((b.Field).replace(reN, ""), 10);
return aN === bN ? 0 : aN > bN ? 1 : -1;
} else {
return aA > bA ? 1 : -1;
}
} else if (isNaN(AInt)) {//A is not an Int
return 1;//to make alphanumeric sort first return -1 here
} else if (isNaN(BInt)) {//B is not an Int
return -1;//to make alphanumeric sort first return 1 here
} else {
return AInt > BInt ? 1 : -1;
}
}
fieldselecteddata.sort(sortAlphaNum);
但这仅按字母/数字顺序排序,直到 1 个数字和 1 个字符的组合,例如A1
, A2
, A10
。但如果有像这样的值A3A
, A3B
在这种情况下,它不会正确排序。这可以直接使用 JavaScript 或 jQuery 来完成吗?