Heim >Web-Frontend >js-Tutorial >Kann eine boolesche Vergleichsfunktion ein JavaScript-Array richtig sortieren?
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:
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:
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:
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!