[JavaScript] sort()メソッドによる配列の並び替え
スポンサーリンク
JavaScriptの配列のソートを行うにはsort
メソッドを使います。
var hash = ['c','a','e','d','b']; hash.sort(); for( var i in hash ) alert(hash[i]);
引数を指定しなかった場合、要素を文字列として比較し、辞書順に並び替えます。上記の配列が要素に持っているのは文字列なので、正しくa,b,c,d,eの順にソートされます。
しかし、要素に数値を持つ配列を、昇順・降順に並び替えたい場合は引数に比較関数を与えなければなりません。例えば、以下の例では正しく並び替えは行われません。
var hash = [12, 1, 65, 105, 65]; hash.sort(); for( var i in hash ) alert(hash[i]);
sortメソッドに引数がありませんので、数値が文字列として比較されてしまうのです。
上記の配列 [12, 1, 65, 105, 65]
を昇順にソートするにはこのようになります。
var hash = [12, 1, 65, 105, 65]; hash.sort(function(a,b){ return a-b; });
sort()メソッドに渡す関数は引数を2つ取ります。ソート順はこの関数の返り値により決定されます。返り値が負の場合、aがbより手前に、返り値が正の場合はbがaより手前に並び替えられます。数値比較の場合、負が昇順、正が降順となります。返り値が0の場合は並び替えは行われません。
上記の配列を降順にソートする場合は以下のコードとなります。
var hash = [12, 1, 65, 105, 65]; hash.sort(function(a,b){ return b-a; });
スポンサーリンク
JavaScriptカテゴリーの投稿
- [Gmaps.js] 地図をドラッグした後の中心座標を取得する
- [jQuery] 文字列が含まれているかどうかの判定
- 圧縮後のJavaScriptやHtmlを元に戻すWebサービス
- Google Code Prettify導入が超絶簡単になっていた
- [JavaScript] 全角を2、半角を1と数えるコード
- [JavaScript] 指定範囲内の整数からランダムな値を得る
- シンタックスハイライター「Google Code Prettify」のカスタマイズ
- [JavaScript] オブジェクトにプロパティを追加
- [JS] 正規表現の特殊文字を置換するJavaScript版preg_quote()
- [JS][jQuery] 要素の存在を確認する6通りのコードと実行速度