ich ein gemischtes Array, die ich nach der Anzahl, Alphabet sortiert werden müssen und dann von Ziffern-wie gemischt Ziffern/Buchstaben-Array sortieren in Javascript
['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3']
wie sortiere ich es sein wie:
Hier['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3']
ist, was ich versuchte:
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);
aber, dass nur sortiert sich alphabetisch/numerisch bis Kombination aus 1 numerischen einem d 1 Zeichen wie A1
, A2
, A10
. Aber wenn es Werte wie A3A
, gibt, wird es in diesem Fall nicht richtig sortieren. Kann dies entweder mit direktem JavaScript oder jQuery gemacht werden?
@RameshRajendran Das ist ** nicht ** eine gültige Entschuldigung für eine Frage Wegthema, dies ist in der Tat auf dem Thema und eine gute Frage. Es spielt keine Rolle, ob dies eine Hausaufgabe ist oder nicht. Der Benutzer hat ein klares Ziel und eine klare Ausgabe und damit eine versuchte Lösung vorgebracht. Das ist viel besser als die meisten Fragen, die ich hier sehe. –
@RameshRajendran Das ist eigentlich eine sehr gute Frage. Es sollte geschützt statt geschlossen sein. –