JavaScript - 配列のソート 数値を昇順・降順にする
JavaScript で配列内の数値を昇順・降順にソート(並び替え)する方法を紹介します。
sort() メソッドに引数として比較関数を指定することで、 数値のソートが簡単に実現できます。
通常の sort() メソッドの問題点
次のサンプルコードのように、引数を指定しない場合は、 文字列としてアルファベット順にソートします。
ですから数値のソートには使えません。
var arr = [1, 5, 11, 2, 33];
arr.sort();
console.log(arr); // Array [ 1, 11, 2, 33, 5 ]
数値の「昇順」にソートする
数値の「昇順」に並べ替える場合は、次のように比較関数を指定します。
var arr = [1, 5, 11, 2, 33];
arr.sort(function(a, b){return a-b;});
console.log(arr); // Array [ 1, 2, 5, 11, 33 ]
数値の「昇順」でソートされていることが確認できます。
数値の「降順」にソートする
数値の「降順」に並べ替える場合は「return b-a;」と記述します。
var arr = [1, 5, 11, 2, 33];
arr.sort(function(a, b){return b-a;});
console.log(arr); // Array [ 33, 11, 5, 2, 1 ]
数値の「降順」でソートされていることが確認できます。
sort() の比較関数の引数について
sort() メソッドは引数として比較関数を指定します。
この比較関数は引数を2つとり、2つの値を比較。
第一引数を第二引数より前にする場合は、返す値を0より小さな値にします。
第一引数を第二引数より後ろにする場合は、返す値を0より大きくします。
まとめ
sort() メソッドは、引数を指定しない場合はアルファベット順にソートするため、 数値のソートには使えません。
引数として比較関数を指定することで、数値の昇順・降順ができます。
昇順は「return 第一引数 - 第二引数;」、降順は「return 第二引数 - 第一引数;」。