2015.6.12
2020.1.7

配列のソート

概要

配列の要素を指定した順番でソートしたい場合の方法です。クライアント側で絞り込んだデータを並び替えたい場合によく利用します。

詳細

◆ 昇順でソート


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) );

JavaScript】関連記事