Die Array.sort-Methode von JavaScript ermöglicht benutzerdefinierte Vergleichsfunktionen zum Sortieren von Elementen und eine häufig gestellte Frage entsteht: Kann eine einfache Vergleichsfunktion, die einen booleschen Wert zurückgibt, zum Sortieren ausreichen? Die Antwort lautet eindeutig Nein.
Eine Vergleichsfunktion in JavaScript sollte die folgenden Regeln einhalten:
Die Rückgabe eines booleschen Werts garantiert jedoch keine Konsistenz. Wenn beispielsweise „compare(a, b)“ „false“ (oder entsprechend 0) zurückgibt, impliziert dies, dass a entweder gleich oder kleiner als b ist. Dies verletzt die Transitivitätseigenschaft, die für Sortieralgorithmen erforderlich ist.
Betrachten Sie diese Vergleichsfunktion:
function compare(a, b) { return a > b; }<p>Sie gibt einen booleschen Wert zurück: true, wenn a größer als b ist, andernfalls falsch.</p> <p>Mit dieser Funktion in sort, wir haben:</p> <pre class="brush:php;toolbar:false">[0, 1, 0].sort(compare); // [0, 1, 0] or [1, 0, 0] (varies between implementations) [1, 1, 0, 2].sort(compare); // [0, 1, 2, 1] or [1, 1, 0, 2] (varies between implementations)
Die Ergebnisse sind inkonsistent, da die Vergleichsfunktion keine Transitivität erzwingt.
Um eine konsistente Sortierung sicherzustellen, verwenden Sie Vergleichsfunktionen, die die zurückgeben korrekte numerische Werte:
Durch Befolgen dieser Richtlinien können Sie ein zuverlässiges und vorhersehbares Sortierverhalten in Ihrem JavaScript-Code sicherstellen.
Das obige ist der detaillierte Inhalt vonWarum reicht ein boolescher Rückgabewert für die Array.sort-Vergleichsfunktion von JavaScript nicht aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!