Javascriptのソート
JavascriptのArrayオブジェクトに存在するsortメソッドのより詳しい使い方について、理解が足りていないので、メモ。
以下が単純な配列のソート
var nums = [ 5, 4, 2, 7, 1, 6, 3 ];
nums.sort();
alert(nums); //結果「1234567」
じゃぁオブジェクトの、あるプロパティ値を比較してソートするには?
var objs = [
{ "name" : 'beyonce', "age" : 24 },
{ "name" : 'aiko', "age" : 18 },
{ "name" : 'celine', "age" : 20 }
];
objs.sort(function(a,b){
return b.age - a.age;
});
for(var i = 0; i < objs.length; i++){
alert(objs[i].name);
}
// beyonce, celine, aikoの順に表示されます
sort()メソッドの引数に比較用の関数をつっこんであげます。
関数の結果が正の値であれば降順、不の値であれば昇順にオブジェクトがソートされます。
文字列でソートしたい場合は比較関数部分が変わって
objs.sort( function(a,b){
return (a.name > b.name) ? 1 : -1;
});
//aiko, beyonce, celineの順に表示されます
コメント