JavaScriptの連想配列のsort(ソート).asortとarsort
Arrayを拡張して連想配列をkeyによってsortするasortと,逆順にsortするarsortを書いてみた.
Array.prototype.asort = function(key) { this.sort(function(a, b) { return (a[key] > b[key]) ? 1 : -1; }); } Array.prototype.arsort = function(key) { this.sort(function(a, b) { return (a[key] < b[key]) ? 1 : -1; }); }
使い方
<script type="text/javascript"> //asort Array.prototype.asort = function(key) { this.sort(function(a, b) { return (a[key] > b[key]) ? 1 : -1; }); } //arsort Array.prototype.arsort = function(key) { this.sort(function(a, b) { return (a[key] < b[key]) ? 1 : -1; }); } //連想配列を格納する配列を作成 var hoge_ar = new Array(); //連想配列を作成してhoge_arに格納 for(var i = 0; i < 10; i++) { var ar = new Array(); ar['id'] = parseInt(Math.random() * 100); ar['text'] = ''; for(var j = 0; j <= i; j++) { ar['text'] += 't'; } hoge_ar.push(ar); } //表示 for(var i = 0; i < hoge_ar.length; i++) { alert('id='+hoge_ar[i].id+'\ntext='+hoge_ar[i].text); } //idの昇順にsort hoge_ar.asort('id'); alert('asort'); //表示 for(var i = 0; i < hoge_ar.length; i++) { alert('id='+hoge_ar[i].id+'\ntext='+hoge_ar[i].text); } //idの降順にsort hoge_ar.arsort('id'); alert('arsort'); //表示 for(var i = 0; i < hoge_ar.length; i++) { alert('id='+hoge_ar[i].id+'\ntext='+hoge_ar[i].text); } </script>
配列の中身がobjectの時とかもソートできるように書きたい