ECMA スクリプト仕様は、配列のアルゴリズムと安定性については依然として不可知です。 .sort() メソッド。ただし、最近の更新と発見により、さまざまなブラウザーでのこのメソッドの動作が明らかになりました。
ES2019 の時点では、並べ替えメソッドは次のとおりです。値が重複した場合に要素の順序を維持することが必要になりました。これは、Array.sort() が ES2019 以降のバージョンをサポートするブラウザで安定していることが保証されていることを意味します。
ES2019 より前では、安定性はArray.sort() のブラウザ依存:
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 サイトの他の関連記事を参照してください。