ホームページ >ウェブフロントエンド >jsチュートリアル >Array.sort() はさまざまなブラウザ間で安定していますか?
異なるブラウザ間での Array.sort() の安定性は何ですか?
Array.sort() メソッドの安定性。ソート後に等しい要素の順序が保持されるかどうかを決定します。ブラウザによって異なります:
ES2019 以降、ソート方法は安定している必要があります:
これは、配列内の等しい要素はソート後も相対的な順序を維持します。
ES2019 より前は、安定性はブラウザーに依存していました:
Chrome の一部のバージョンでは、配列サイズに基づいて安定したソートと不安定なソートが切り替わることに注意してください:
<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 70 より前では、エンジンは小さな配列には安定した並べ替えを使用し、大きな配列には不安定な並べ替えを使用していました。これは、次のテスト ケースを使用して検証できます:このテストは、不安定な並べ替えを実装した以前のバージョンの Chrome およびその他のブラウザーでの不安定性を示します。
以上がArray.sort() はさまざまなブラウザ間で安定していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。