Array.sort() はさまざまなブラウザーでも安定していますか?

Mary-Kate Olsen
リリース: 2024-11-02 00:03:28
オリジナル
316 人が閲覧しました

Is Array.sort() Stable in Different Browsers?

Array.sort() さまざまなブラウザでのメソッドの安定性

ECMA スクリプト仕様は、配列のアルゴリズムと安定性については依然として不可知です。 .sort() メソッド。ただし、最近の更新と発見により、さまざまなブラウザーでのこのメソッドの動作が明らかになりました。

ES2019 および Beyond

ES2019 の時点では、並べ替えメソッドは次のとおりです。値が重複した場合に要素の順序を維持することが必要になりました。これは、Array.sort() が ES2019 以降のバージョンをサポートするブラウザで安定していることが保証されていることを意味します。

レガシー ブラウザ サポート

ES2019 より前では、安定性はArray.sort() のブラウザ依存:

  • Internet Explorer (IE6 ): 安定
  • Firefox (< 3): 不安定
  • Firefox (>= 3): 安定
  • Chrome (< 70): 不安定
  • Chrome (>= 70): 安定
  • Opera ( 不安定
  • Opera (>= 10) ): 安定
  • Safari (4 ): 安定
  • エッジ (長い配列の場合): 不安定

V8 の異常

V8 (Chrome および Node.js で使用される JavaScript エンジン) の特定のバージョンでは、サイズに応じて並べ替えアルゴリズムが安定から不安定に切り替わる場合があります。配列の。この動作を実証するために、次のテスト ケースを検討してください。

<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>
ログイン後にコピー

このコードは、ランダムな x 座標と増加する y 座標を持つペアの配列をシミュレートします。安定した並べ替えでは、同じ x 座標を持つ要素の順序が維持されます (この場合、y 座標は連続している必要があります)。ただし、一部のブラウザ (特に Chrome の以前のバージョン) では、より大きな配列のソートが不安定になる可能性があります。

以上がArray.sort() はさまざまなブラウザーでも安定していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート