Heim >Web-Frontend >js-Tutorial >Kann eine boolesche Vergleichsfunktion ein JavaScript-Array richtig sortieren?

Kann eine boolesche Vergleichsfunktion ein JavaScript-Array richtig sortieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 00:12:13939Durchsuche

Can a Boolean Comparison Function Properly Sort a JavaScript Array?

Sortieren in JavaScript: Reicht die Rückgabe eines Booleschen Werts für eine Vergleichsfunktion nicht aus?

Die traditionelle Art, ein Array in JavaScript zu sortieren, ist mithilfe der Methode Array.sort(), mit der Sie einen benutzerdefinierten Vergleich angeben können Funktion.

Frage:

Können wir einfach eine boolesche Vergleichsfunktion (die true/false zurückgibt) verwenden, um ein Array zu sortieren, oder müssen wir einen numerischen Wert zurückgeben? (z. B. 1, -1, 0)?

Antwort:

Nein, die Rückgabe eines booleschen Werts reicht für eine Vergleichsfunktion in JavaScript nicht aus. Die Vergleichsfunktion muss einen numerischen Wert zurückgeben, der die Beziehung zwischen den beiden verglichenen Elementen angibt:

  • 1, wenn a größer als b ist
  • -1, wenn a kleiner als b ist
  • 0, wenn a gleich ist b

Begründung:

Die Rückgabe eines booleschen Werts gibt nur an, ob ein Element größer oder kleiner als das andere ist, liefert aber nicht genügend Informationen dafür Sortieralgorithmus, um zu bestimmen, welches Element zuerst kommt. Beispielsweise gibt eine Vergleichsfunktion, die „true“ zurückgibt, nicht an, ob a nur größer als b oder viel größer als b ist.

Warum die falsche Lösung vorherrscht:

Die Die falsche Lösung zur Rückgabe eines booleschen Werts ist weit verbreitet, da sie in einigen Fällen funktioniert, insbesondere beim Sortieren einfacher Zahlenarrays. Es kann jedoch zu unerwarteten Ergebnissen kommen, wenn komplexere Daten sortiert werden oder instabile Sortieralgorithmen verwendet werden (die die Reihenfolge gleicher Elemente ändern).

Korrekte Vergleichsfunktionen:

Um ein Array korrekt zu sortieren, verwenden Sie eine der folgenden Vergleichsfunktionen:

  • Lexikografische Sortierung (kein Vergleich). Funktion): Stellen Sie für eine einfache lexikografische Sortierung keine Vergleichsfunktion bereit. Die Elemente werden entsprechend stringifiziert und sortiert.
  • Generische Vergleichsfunktion:

    function(a, b) {
      if (a > b) return 1;
      if (a < b) return -1;
      /* else */ return 0;
    }
  • Vergleichsfunktion für Zahlen:

    function(a, b) {
      return a - b;
    }

Hinweis:

  • Stellen Sie immer sicher, dass Ihre Vergleichsfunktion konsistent und befolgt die Regeln der Transitivität, um unerwartetes Sortierverhalten zu vermeiden.
  • Um zusammengesetzte Typen zu sortieren, ändern Sie den Vergleich Funktion zum Vergleichen der gewünschten Eigenschaften oder verwenden Sie eine benutzerdefinierte Funktion, die einen sortierbaren Wert zurückgibt.

Das obige ist der detaillierte Inhalt vonKann eine boolesche Vergleichsfunktion ein JavaScript-Array richtig sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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