3

Chrome の不安定な並べ替えの問題は認識していますが、文字列を並べ替えるときにこれに対処する方法がわかりません。

myArray.sort(function(a, b){
        var typeA=a.toLowerCase();
        var typeB=b.toLowerCase();

        return (typeA < typeB) ? -1 : (typeA > typeB) ? 1 : 0;
        });

FF と Safari では正常に動作しますが、Chrome ではこれでも間違った順序が返されます。つまり、Chrome は typeA == typeB の場合に 0 を返すことを尊重しません...それでも移動することを選択します。文字列の並べ替えを処理するための修正はありますか?

4

1 に答える 1

2

JS仕様では、ソートアルゴリズムが安定している必要がないため、それを当てにすることはできません。

不安定な並べ替えの問題を解決する唯一の明確な方法は、異なる安定したアルゴリズムを手動でコーディングするか、並べ替えに1つの一意のキーを追加して、比較関数が常に2つの要素を互いに大きいまたは小さいとして処理することを保証することです。同等。元の配列インデックスで十分です。

于 2012-10-10T18:10:49.890 に答える