JavaScriptで配列をソートする:sort()

配列を並び替えるためのメソッドにsort()というものがあります。ソートとは、データを大きい順や、小さい順に並べるといったある一定の条件に従って並べることです。

ソートメソッドの使い方

// 数字の配列の場合
var array = [3,2,0,9,5,7];
array = array.sort();

console.log(array);
// 結果
[0, 2, 3, 5, 7, 9]

数字の場合は昇順に並べてくれます。

// 文字の配列の場合
var array = ['d','s','b','y','w','a'];
array = array.sort();

console.log(array);
// 結果
["a", "b", "d", "s", "w", "y"]

文字の場合はアルファベット順に並べてくれます。

ソートメソッドの注意点

先ほどの数字の配列の場合、1桁の場合は昇順になりました。しかし、2桁の場合には昇順にはなりません。実際に実行してみましょう。

var array = [3,12,0,32,5,17];
array = array.sort();

console.log(array);
// 実行結果:2桁の場合は昇順にならない
[0, 12, 17, 3, 32, 5]

どうしてこのような結果になってしまうかというと、文字列として認識してしまうために1桁目の文字を昇順に並べてしまっているからです。

このような場合も想定できるので、数字を扱う際は、以下のように実行する方が良いです。

var a = [15,3,10,2,9]
a.sort(function(a,b){
    return a - b;
});

これは配列の要素を二つ(aとb)を取得し、返り値に1つ目の要素から2つ目の要素を引いた値が入ります。
そしてこの仕組みは、返り値が0より小さい場合はaをbより小さい順にソートし、返り値が0のときは何もせず、返り値が0より大きい場合はbを aより順にソートするという形になっています。

もし降順にしたい場合は引き算を逆にすれば行うことができます。


イベント

2017/12/05(火)
Design Thinking Square