現在、JavaScript本格入門という書籍を読みながら勉強しています。
sort
メソッドについて教えてください。
書籍には sort
メソッドの説明している箇所に下記のコードがあります。
javascript
1var ary = [5, 25, 10]; 2 3// ① 結果:[10, 25, 5](文字列としてソート) 4console.log(ary.sort()); 5 6// ② 結果:[5, 10, 25](数値としてソート) 7console.log(ary.sort(function(x, y) { 8 return x - y; 9}));
書籍には下記のように説明があります。
sortメソッドは、デフォルトで配列を文字列として辞書順にソートします。このルールを変更するには、引数として、以下のような関数を定義します。
・引数は2つ(比較する配列要素)
・第1引数が第2引数より小さい場合は負数、大きい場合は正数を返す
①に関しては引数を省略しているので、1から順番に並び替えが行われたのかと思います。
②の記述について理解できません。
記述例は、sort
メソッドの第一引数に無名関数を記述して、無名関数の仮引数に x
と y
と記述しているかと思います。
第1引数が第2引数より小さい場合は負数、大きい場合は正数を返す
上記の説明の箇所があてはまるのかと思いますが、どのような意味かわかりません。
仮引数に入る x
と y
の値を比較しているのでしょうか?
x
と y
にはどの値がどのような順番で入るのでしょうか?
負数、正数を返すとありますが、これもわかりません。
仮に 5
と 25
の値を比較した場合でも、負数はどこにもないかと思います。
負数、正数を返すとはどのような意味なのでしょうか?
もう一つありまして、関数内で記述している return x - y
についてもどのような意味なのかわかりません。
戻り値を返しているということはわかりますが、x - y
とするだけでなぜ数値としてソートされるのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/09/25 10:12 編集