I have a mixed array that I need to sort by number, alphabet and then by digit-
['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3']
how do I sort it to be like:
['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3']
Here is what I tried:
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);
but that only sorts it alphabetically/numeric till combination of 1 numeric and 1 character like A1, A2, A10. But if there will be values like A3A, A3B in that case it wont sort properly. Can this be done with either straight JavaScript or jQuery?