10

「Learning PHP, MySql and Javascript by. Robin Nixon」のこの部分は間違っていますか?

numbers = [7, 23, 6, 74];

numbers.sort(function(a,b){return a - b});

出力は 6,7,23,74 です

本は言う:

sort() 内の無名関数がゼロより大きい値を返す場合、ソートはaがbより前にあると想定します。

sort() 内の無名関数がゼロ未満の値を返す場合、ソートはbが a の前にあると想定します。

並べ替えは、配列内のすべての値に対してこの関数を実行して、それらの順序を決定します。

これは間違っていますか?なぜなら....

aここは7
bここです23

7 - 23 = -16// ゼロ未満の数値。本は、b が a の前に来るべきだと言っています。

したがって、最終的な出力は74, 23, 7, 6

4

2 に答える 2

5

それは間違っているようです。MDNから:

compareFunction(a, b) が 0 未満の場合、a を b よりも小さいインデックスに並べ替えます。

(この場合の「より低いインデックス」は、a が b の前に来ることを意味します)

于 2012-07-06T18:29:47.000 に答える
2

出力は正しいですが、説明は正しくありません。メソッドが < 0 を返す場合、a は b の前に来ます。

于 2012-07-06T18:30:19.730 に答える