Heim > Web-Frontend > js-Tutorial > Wie implementiert die bereitgestellte JavaScript-Funktion die natürliche Sortierung eines Arrays von Zeichenfolgen, die Zahlen enthalten?

Wie implementiert die bereitgestellte JavaScript-Funktion die natürliche Sortierung eines Arrays von Zeichenfolgen, die Zahlen enthalten?

Susan Sarandon
Freigeben: 2024-11-11 21:11:03
Original
897 Leute haben es durchsucht

How does the provided JavaScript function implement natural sorting of an array of strings containing numbers?

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:

  1. Tokenize Strings:

    • Diese Funktion tokenisiert die Eingabezeichenfolgen und trennt Zahlen von Zeichen. Token werden als Paare in einem Array gespeichert, wobei das erste Element die Zahl (oder Unendlich, wenn keine Zahl) und das zweite Element die nicht numerischen Zeichen sind.
  2. Vergleichsschleife:

    • Es tritt in eine Schleife ein, die die Token der beiden Eingaben durchläuft Zeichenfolgen.
    • In jeder Iteration wird das erste Element (Zahl) oder das zweite Element (Zeichen) der Token-Paare verglichen.
    • Wenn eins größer ist, gibt die Funktion das Vergleichsergebnis zurück ( positiv für a, negativ für b). Wenn sie gleich sind, wird mit dem nächsten Paar fortgefahren.
  3. Umgang mit ungleicher Tokenlänge:

    • Wenn ja Wenn es sich noch um Elemente in einem der Token-Arrays handelt, wird deren Längendifferenz als Vergleich zurückgegeben Ergebnis.

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 &amp;&amp; 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;
Nach dem Login kopieren

}

// 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage