Die ECMA-Skriptspezifikation bleibt unabhängig vom Algorithmus und der Stabilität des Arrays .sort()-Methode. Jüngste Aktualisierungen und Entdeckungen haben jedoch Aufschluss über das Verhalten dieser Methode in verschiedenen Browsern gegeben.
Ab ES2019 ist die Sortiermethode Jetzt erforderlich, um die Elementreihenfolge bei doppelten Werten beizubehalten. Dies bedeutet, dass Array.sort() in Browsern, die ES2019 und spätere Versionen unterstützen, garantiert stabil ist.
Vor ES2019 war die Stabilität von Array.sort() war browserabhängig:
< h3>V8-Anomalie
Mit Sicherheit In Versionen von V8 (der von Chrome und Node.js verwendeten JavaScript-Engine) kann der Sortieralgorithmus je nach Größe des Arrays von stabil auf instabil umschalten. Um dieses Verhalten zu demonstrieren, betrachten Sie den folgenden Testfall:
<code class="javascript">function Pair(_x, _y) { this.x = _x; this.y = _y; } function pairSort(a, b) { return a.x - b.x; } var y = 0; var check = []; while (check.length < 100) { check.push(new Pair(Math.floor(Math.random() * 3) + 1, ++y)); } check.sort(pairSort);</code>
Dieser Code simuliert ein Array von Paaren mit zufälligen x-Koordinaten und zunehmenden y-Koordinaten. Eine stabile Sortierung würde die Reihenfolge der Elemente mit derselben x-Koordinate beibehalten (in diesem Fall sollte die y-Koordinate sequentiell sein). Allerdings kann es bei einigen Browsern (insbesondere früheren Versionen von Chrome) zu Instabilität beim Sortieren größerer Arrays kommen.
Das obige ist der detaillierte Inhalt vonIst Array.sort() in verschiedenen Browsern stabil?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!