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 aufrechtzuerhalten. 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:
In bestimmten Versionen von V8 (der von Chrome und Node.js verwendeten JavaScript-Engine) wechselt der Sortieralgorithmus je nach Größe des Arrays möglicherweise von stabil zu instabil. Um dieses Verhalten zu demonstrieren, betrachten Sie den folgenden Testfall:
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 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3