Heim > Artikel > Web-Frontend > Ist Array.sort() in verschiedenen Browsern stabil?
Wie hoch ist die Stabilität von Array.sort() in verschiedenen Browsern?
Die Stabilität der Array.sort()-Methode, die bestimmt, ob die Reihenfolge gleicher Elemente nach dem Sortieren erhalten bleibt, variiert zwischen verschiedenen Browsern:
Ab ES2019 muss die Sortiermethode stabil sein:
Das bedeutet dass gleiche Elemente im Array nach dem Sortieren ihre relative Reihenfolge beibehalten.
Vor ES2019 war die Stabilität browserabhängig:
Beachten Sie, dass einige Versionen von Chrome basierend auf der Array-Größe zwischen stabilen und instabilen Sortierungen umgeschaltet haben:
Vor Chrome 70 verwendete die Engine eine stabile Sortierung für kleine Arrays und eine instabile Sortierung für größere Arrays. Dies kann mithilfe des folgenden Testfalls überprüft werden:
<code class="js">function Pair(_x, _y) { this.x = _x; this.y = _y; } function pairSort(a, b) { return a.x - b.x; } // Create an array with enough entries to trigger the "more efficient" sort method var y = 0; var check = []; while (check.length < 100) { check.push(new Pair(Math.floor(Math.random() * 3) + 1, ++y)); } check.sort(pairSort); // Check for instability by comparing the order of equal elements var min = {}; var issues = 0; for (var i = 0; i < check.length; ++i) { var entry = check[i]; var found = min[entry.x]; if (found) { if (found.y > entry.y) { console.log("Unstable at " + found.i + ": " + found.y + " > " + entry.y); ++issues; } } else { min[entry.x] = {x: entry.x, y: entry.y, i: i}; } } // Log stability status if (!issues) { console.log("Sort appears to be stable"); }</code>
Dieser Test zeigt Instabilität in früheren Versionen von Chrome und anderen Browsern, die instabile Sortierungen implementiert haben.
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!