Natürliche Sortierung von Array-Elementen (String mit Zahlen)
Das sinnvolle Sortieren eines Arrays aus Strings, die Zahlen enthalten, kann eine Herausforderung sein. Die lexikografische Sortierung führt oft zu einer unerwarteten Reihenfolge. Um die gewünschte „natürliche Sortier“-Reihenfolge zu erreichen, können wir den folgenden Ansatz verwenden:
Lösung:
Die bereitgestellte JavaScript-Funktion verwendet eine benutzerdefinierte Vergleichsfunktion namens naturalCompare. So funktioniert es:
Tokenize Strings:
Vergleichsschleife:
Umgang mit ungleicher Tokenlänge:
Beispiel:
Hier ist ein Beispiel für die Verwendung dieses Ansatzes zum Sortieren des Arrays:
< ;pre>
function naturalCompare(a, b) {
// Tokenization var ax = [], bx = []; a.replace(/(\d+)|(\D+)/g, function(_, , ) { ax.push([ || Infinity, || ""]) }); b.replace(/(\d+)|(\D+)/g, function(_, , ) { bx.push([ || Infinity, || ""]) }); // Comparison while(ax.length && bx.length) { var an = ax.shift(); var bn = bx.shift(); var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]); if(nn) return nn; } // Handling unequal length return ax.length - bx.length;
}
// Sortiertest-Array
let arr = ["IL0 Foo", "PI0 Bar", "IL10 Baz", "IL3 Bob sagt hallo"];
arr.sort(naturalCompare);
console.log(arr);
Ausgabe:
[
„IL0 Foo“,
„IL3 Bob sagt Hallo“,
„IL10 Baz“,
„PI0 Bar“
]
Das obige ist der detaillierte Inhalt vonWie implementiert die bereitgestellte JavaScript-Funktion die natürliche Sortierung eines Arrays von Zeichenfolgen, die Zahlen enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!