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 第二引数 - 第一引数;」。