Javascriptのソートメッソド覚書
■基本
通常
1 2 |
var hoge = [1,3,21,10,100,2,11]; hoge.sort(); |
値を数値としてソート
1 |
hoge.sort(function(a,b){return a - b}); |
降順
1 2 3 4 |
hoge.sort(function(a,b){return a < b}); //reverse()と同じ。 hoge.reverse(); |
値を加工しながらソート
1 2 3 4 5 6 |
var hogeImgs = ["1.jpg","21.gif","3.jpg","154.png","1111.jpg","316.bmp","1113.gif"]; //拡張子を除き数値としてソート hogeImgs.sort(function(a,b){ return a.split(".")[0] - b.split(".")[0] }); |
■2次元配列のソート
1 2 3 4 5 6 7 8 9 |
var hoge2d = [ [1, 3, 21, 10, 100, 2, 11], [5,1,11,10,100,31,15], [100,0,5,23,30,11], [1,2,3] ] //3列目の値を対象としてソート hoge2d.sort(function(a,b){return a[3] - b[3]}); |
■連想配列(ハッシュ)を含む配列のソート
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
hogeHash = [ {group:1, name:"hogeo", age:14}, {group:1, name:"hogeko", age:21}, {group:1, name:"hogenari", age:35}, {group:2, name:"hogehisa", age:19}, {group:2, name:"hogesige", age:23}, {group:2, name:"hogemi", age:12}, {group:3, name:"hogeteru", age:56}, {group:3, name:"hogekusa", age:9}, {group:3, name:"hogemura", age:27}, {group:3, name:"hogeji", age:32}, ] //ageの値を元にソート hogeHash.sort(function(a,b){return a['age'] - b['age']}); |
■二重(ダブル)ソート
group毎にage順にソート
論理演算子で指定
1 2 3 |
hogeHash.sort(function(a,b){ return a['group'] - b['group'] || a['age'] - b['age'] }); |
メソッドチェーンで
1 2 3 4 5 |
hogeHash.sort(function(a,b){ return a['age'] - b['age'] }).sort(function(c,d){ return c['group'] - d['group'] }); |
Javascriptのソートメッソドは奥が深い。