首頁 > web前端 > js教程 > 主體

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

Linda Hamilton
發布: 2024-11-02 13:38:30
原創
190 人瀏覽過

Is Array.sort() stable across different browsers?

Array.sort() 在不同瀏覽器上的穩定性如何?

Array.sort() 方法的穩定性,決定排序後是否保留相等元素的順序,不同瀏覽器有所不同:

從ES2019 開始,要求排序方法穩定:

這表示數組中相等的元素在排序後將保持其相對順序。

在ES2019 之前,穩定性取決於瀏覽器:

  • IE 6 :穩定
  • Firefox
  • Firefox 3:
  • 不穩定
  • Firefox >= 3:
  • 穩定 70: 不穩定
  • Chrome >= 70: 穩定
  • Opera
  • Opera 不穩定 🎜>Opera >= 10: 穩定
  • Safari 4:
  • 穩定

Edge: 對於超過512 個元素的數組不穩定

<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>
登入後複製
請注意,某些版本的Chrome 會根據數組大小在穩定排序和不穩定排序之間切換:

在Chrome 70之前,引擎對小型數組使用穩定排序,對較大數組使用不穩定排序。這可以使用以下測試案例進行驗證:此測試將演示先前版本的 Chrome 和其他實現不穩定排序的瀏覽器的不穩定性。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!