JavaScript - 2次元配列のソート
JavaScriptで、2次元配列を特定の列でソートする方法を紹介します。
比較関数内で「ソートしたい列のインデックス」を指定することにより、 2次元配列をソートできます。
ソート対象の2次元配列
次のように「名前」と「得点」が入っている2次元配列を想定します。
var arr = [["田中", 80],
["山田", 90],
["鈴木", 70],
["竹田", 60]
];
2次元配列のソート
2次元配列を「得点」順(昇順)にソートします。
各配列の中で「得点」は2番目(インデックス = 1)の要素に入っています。
サンプルコードは次の通りです。
// 2次元配列
var arr = [["田中", 80],
["山田", 90],
["鈴木", 80],
["竹田", 60]
];
// ソート
arr.sort(function(a, b){
if (a[1] > b[1]) return 1;
if (a[1] < b[1]) return -1;
return 0;
});
console.table(arr);
実行結果は次の通りです。
得点順(昇順)に並んでいることが確認できます。
降順にソートしたい場合は、不等号の向きを入れ替えるか、 return の値を入れ替えることで降順になります。
return の値を入れ替えた場合(降順)のコードです。
arr.sort(function(a, b){
if (a[1] > b[1]) return -1;
if (a[1] < b[1]) return 1;
return 0;
});
まとめ
このように、2次元配列のソートも1次元配列とほぼ同じように実現できます。
比較関数内で「ソートする列のインデックス」を指定するだけです。