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次元配列とほぼ同じように実現できます。

比較関数内で「ソートする列のインデックス」を指定するだけです。