ある案件で配列で、配列要素を数値の大きい順に並び替えたいことがあったので、そいつをメモる。
sort()は文字列として比較
sort()は文字列として並びかえるようなんで下記のような記述だと思ったとおりの結果が返ってこない
var list=new Array(10,2,30,1,4);
list.sort();
alert(list);
結果は「1,10,2,30,4」と表示されてしまう
これだと数値の大きい順にならばない
sort()内に比較する関数を定義する
比較関数は2つの引数を比較するというそのまんまです。説明は下記サイトに書いてあります。
var list=new Array(10,2,30,1,4);
//昇順
list.sort(asc);
//降順
list.sort(desc);
//昇順での計算方法
function asc(a,b){
return (a-b);
}
//降順での計算方法
function desc(a,b){
return (b-a)
}
上記のよう計算すればオッケ