0

sort() function を使用して配列をソートしたい場合、アルファベット順にソートされた配列が得られます。例えば。

var a=[9,10,1];
a.sort();

私は得ていますa = [1,10,9]

したがって、提案に従って、別の関数を使用しました

function sortfunction(x, y){
    return (x - y) //causes an array to be sorted numerically and ascending
}

そして使用

a.sort(sortfunction);

正しい結果を得るために。

これがどのように機能するか、誰でも詳細に説明できますか?

4

1 に答える 1

3

最初のバージョンは、辞書式ソートとして知られている文字列 ("9"より大きい) のように比較されるため、失敗します。"10"

カスタムコンパレータ関数は、配列のメンバーであるaと呼び出されます。b

返される内容に応じて、メンバーがシフトされます。が返された場合0、メンバーは等しいと見なされます。負の数の場合aより小さい bと見なされ、正の数の場合は逆になります。

これを視覚化したい場合は、いつでもコンソールにログaを記録しbて、それらがどのように比較されているかを観察できます (冗長な比較が行われないことに注意してください)。

これはすべてソート アルゴリズムによって支えられており、選択は実装に任されています。たとえば、Chrome では、メンバーのタイプに応じて異なるアルゴリズムが使用されます。

于 2013-07-30T02:52:24.123 に答える