1. ホーム
  2. javascript

[解決済み] Javascriptのsort()はどのように動作するのですか?

2022-05-15 10:09:48

質問

次のコードは、この配列をどのように数値順に並べるのでしょうか?

var array=[25, 8, 7, 41]

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

計算結果が...ならわかるけど

0より小さい : "a"は"b"よりも低いインデックスになるようにソートされています。

ゼロです。 "a"と"b"は等しいとみなされ、ソートは実行されません。

0より大きい。 "b" は "a" よりも低いインデックスになるようにソートされています。

配列ソートのコールバック関数は、ソート中に何度も呼び出されるのでしょうか?

もしそうなら、どの2つの数字が毎回関数に渡されるのか知りたいです。私は、最初に "25"(a) と "8"(b) を取り、次に "7"(a) と "41"(b) を取ると仮定したので、。

25(a) - 8(b) = 17 (0より大きいので、"b" が "a" より低いインデックスになるようにソートします)。8, 25

7(a) - 41(b) = -34 (ゼロより小さいので、"a" が "b" よりも低いインデックスになるように並べ替える: 7, 41)

それでは、2つの数値の組は、互いにどのようにソートされているのでしょうか。

悩める初心者を助けてください

どのように解決するのですか?

<ブロッククオート

配列ソートのコールバック関数は、ソート中に何度も呼び出されるのでしょうか?

はい

<ブロッククオート

もしそうなら、どの 2 つの数値が毎回関数に渡されるのかを知りたいのですが

で自分で調べればいいのでは?

array.sort((a,b) => {
  console.log(`comparing ${a},${b}`);
  return a > b ? 1
               : a === b ? 0 
                         : -1;
});

EDIT

これは私が得た出力です。

25,8
25,7
8,7
25,41