ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の Array.sort 比較関数にブール値の戻り値が十分ではないのはなぜですか?
JavaScript の Array.sort メソッドでは、要素を並べ替えるためのカスタム比較関数が可能です。また、よくある質問ソートにはブール値を返す単純な比較関数で十分でしょうか?答えは明確にノーです。
JavaScript の比較関数は次の規則に従う必要があります:
ただし、ブール値を返しても一貫性は保証されません。たとえば、compare(a, b) が false (または同等の 0) を返す場合、a が b に等しいか、小さい ことを意味します。これは、並べ替えアルゴリズムに必要な推移性プロパティに違反します。
次の比較関数を考えてみましょう:
function compare(a, b) { return a > b; }
a が b より大きい場合はブール値を返します。
この関数をソートに使用すると、 have:
[0, 1, 0].sort(compare); // [0, 1, 0] or [1, 0, 0] (varies between implementations) [1, 1, 0, 2].sort(compare); // [0, 1, 2, 1] or [1, 1, 0, 2] (varies between implementations)
比較関数が推移性を強制していないため、結果に一貫性がありません。
一貫した並べ替えを保証するには、正しい数値:
これらのガイドラインに従うことで、JavaScript コードで信頼性が高く予測可能な並べ替え動作を保証できます。
以上がJavaScript の Array.sort 比較関数にブール値の戻り値が十分ではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。