配列のソート
概要
配列の要素を指定した順番でソートしたい場合の方法です。クライアント側で絞り込んだデータを並び替えたい場合によく利用します。
詳細
◆ 昇順でソート
var data = ["う", "お", "え", "あ", "い"];
data.sort( function( a, b ){
if( a > b ) return 1;
if( a < b ) return -1;
return 0;
});
alert( data.toString() ); // あ,い,う,え,お
◆ 降順でソート
var data = ["う", "お", "え", "あ", "い"];
data.sort( function( a, b ){
if( a > b ) return -1;
if( a < b ) return 1;
return 0;
});
alert( data.toString() ); // お,え,う,い,あ
昇順と降順の違いは4,5行目の戻り値
◆ 複数の条件でソート
var data2 = [
{"type" : "か", "no" : "4", "name" : "け"},
{"type" : "あ", "no" : "2", "name" : "い"},
{"type" : "あ", "no" : "5", "name" : "お"},
{"type" : "あ", "no" : "1", "name" : "あ"},
{"type" : "か", "no" : "2", "name" : "き"},
{"type" : "か", "no" : "1", "name" : "か"},
{"type" : "か", "no" : "3", "name" : "く"},
{"type" : "あ", "no" : "3", "name" : "う"},
{"type" : "あ", "no" : "4", "name" : "え"},
{"type" : "か", "no" : "5", "name" : "こ"}
];
data2.sort( function( a, b ){
// 1番目のソート条件
if( a.type > b.type ) return 1;
if( a.type < b.type ) return -1;
// 2番目のソート条件
if( parseInt( a.no ) > parseInt( b.no ) ) return 1;
if( parseInt( a.no ) < parseInt( b.no ) ) return -1;
return 0;
});
alert( JSON.stringify(data2) );