2013年10月1日火曜日

JavaScript で配列をソートする

JavaScrpt の Array プロトタイプには sort() というメソッドが定義されており、
配列の並び替えに使用できます。

var array = ['orange', 'apple', 'banana'];
array.sort();
console.log(array);  // ['apple', 'banana', 'orange']

このように引数なしで使用すると、配列の各要素を文字列に変換した上で、
昇順に並び替えます。
辞書上の出現順番と同じになるので数値の大小とは異なります。
たとえば [300, 350, 1000] は [1000, 300, 350] となります。

数値として並び替えたり、独自のルールで並び替える場合には比較関数を渡します。

var array = [1000, 300, 350, 200, 850];
array.sort(function(a, b) {
    return a < b ? -1 : 1;
});
console.log(array);  // [200, 300, 350, 850, 1000]

配列の要素 a, b が比較関数に与えられた時に、
比較関数が 0 未満を返せば a が b より左に、
 0 より大きい数値を返せば a が b より右に配置されます。
sort() に比較関数を渡した場合はこのルールに従って配列が並び替えられます。

0 件のコメント:

コメントを投稿