比較関数の意味がわからん。
ちまちまとjavascriptを勉強中。テキストはこちら。
JavaScriptプログラミング入門 第2版
配列の並び替えの所で出てきた比較関数の意味がよくわからん。
昇順で並び替えるスクリプト
// 比較関数compareの定義(昇順) function compare(a,b){ return a - b; } var numArray = new Array(5,50,9,10,5); numArray.sort(compare); for (var i = 0; i < numArray.length; i++){ document.write(numArray[i],"<br>"); }
この結果がこれ。
5 5 9 10 50
で、sort(compare)で昇順で並べ替えてるのはわかるんだけど、そこで使う比較関数の説明の部分で、
「aの方が大きい→正の値, aとbは等しい→0, bの方が大きい→負の値 を返す」
って書いてあるんだけど、なぜ比較関数を「return a-b」とすると昇順になるのかがさっぱりわからん。
正の値を返すとどうなって、負の値を返すとどうなるのかがわからん。
どうやら「return a - b;」だと昇順で、「return b - a;」だと降順になるらしいから、とりあえずは仕組みは置いといて形だけ覚えておくことにする。