ホームページ >ウェブフロントエンド >jsチュートリアル >Array.sort() はさまざまなブラウザーでも安定していますか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 00:03:28330ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。