„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Ist Array.sort() in verschiedenen Browsern stabil?

Ist Array.sort() in verschiedenen Browsern stabil?

Veröffentlicht am 12.11.2024
Durchsuche:278

Is Array.sort() Stable in Different Browsers?

Array.sort()-Methodenstabilität in verschiedenen Browsern

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.

ES2019 und darüber hinaus

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.

Legacy-Browser-Unterstützung

Vor ES2019 war die Stabilität von Array.sort() war browserabhängig:

  • Internet Explorer (IE6): Stabil
  • Firefox ( Instabil
  • Firefox (>= 3): Stabil
  • Chrome ( Instabil
  • Chrome (>= 70): Stabil
  • Opera ( Instabil
  • Opera (>= 10): Stabil
  • Safari (4): Stabil
  • Edge (für längere Arrays): Instabil

V8 Anomalie

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.

Neuestes Tutorial Mehr>

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