首頁 >web前端 >js教程 >Array.sort() 在不同瀏覽器中穩定嗎?

Array.sort() 在不同瀏覽器中穩定嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 00:03:28342瀏覽

Is Array.sort() Stable in Different Browsers?

Array.sort() 方法在不同瀏覽器中的穩定性

ECMA 腳本規格對陣列的演算法和穩定性仍然不可知.sort() 方法。然而,最近的更新和發現揭示了此方法在各種瀏覽器中的行為。

ES2019 及以後

從 ES2019 開始,排序方法是現在需要在出現重複值時保持元素順序。這表示 Array.sort() 在支援 ES2019 及更高版本的瀏覽器中保證穩定。

舊版瀏覽器支援

ES2019 之前,穩定性Array.sort() 取決於瀏覽器:

  • Internet Explorer (IE6):穩定
  • Firefox ( 不穩定
  • Firefox (>= 3): 穩定
  • Chrome ( 不穩定
  • Chrome (>= 70):穩定
  • Oper (不穩定
  • Opera (>= 10) ):
  • 穩定
  • Safari (4 ):
  • Safari (4 ): 穩定
  • 穩定

邊緣(對於較長的陣列):

不穩定

<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>

V8 異常

在某些版本的V8(Chrome 和Node.js 使用的JavaScript 引擎)中,排序演算法可能會根據大小從穩定切換到不穩定數組的。為了示範此行為,請考慮以下測試案例:此程式碼模擬具有隨機 x 座標和遞增 y 座標的對數組。穩定的排序將保持具有相同 x 座標的元素的順序(在這種情況下,y 座標應該是連續的)。但是,某些瀏覽器(尤其是早期版本的 Chrome)在對較大數組進行排序時可能會表現出不穩定。

以上是Array.sort() 在不同瀏覽器中穩定嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn