ここから本文です

javascriptの配列

正五郎(ハンドルネーム)さん

2010/12/218:33:46

javascriptの配列

function compare(a,b){
return a - b;
}
var ages = new Array(4, 6, 10, 1, 11, 40);
ages = ages.sort(compare);
document.write(ages.join());

比較関数で aの方が大きい→正の値 aとbは等しい→0 bの方が大きい→負の値 を返す らしいのですがなぜa - bにすると昇順になるのでしょう?またsortの引数の時関数を呼ぶとき引数の()もないのはなぜでしょう?
質問の意味が分からなかったらすみません。

閲覧数:
1,032
回答数:
1

違反報告

ベストアンサーに選ばれた回答

aaaaaさん

2010/12/221:40:34

a-bはaとbのどちらが大きいかを比べるためのものです。
sortはcompareが負の値を返した場合、つまりaの方が小さい場合はaを、正の数を返した場合、つまりaのほうが大きい場合はbを配列の前に持っていくので昇順になります。

関数は文法の一種に見えますが、実はオブジェクトです。変数に代入したりもできます。
sortの引数に()がないのは、compareを呼び出しているのではなく単にsortの引数として関数を渡しているからです。
なので、
ages.sort(function(a,b){return a-b;});
という風に書き換えることもできます。

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる