この記事ではJavaScriptで配列の要素をソートする方法について見ていきたいと思います。
配列をソートする方法
配列をソートするにはsort()を使用します。
sort()は指定した配列の要素をソートするために用いられる関数です。
書き方は以下の通りです。
sort()の書き方
・比較関数を指定する場合
→ 配列.sort(比較関数)
・比較関数を指定しない場合
→ 配列.sort()
※比較関数を指定しない場合は、Unicode(文字に割り当てられた数値)の順にソートされることになります。
比較関数について
比較関数は配列のそれぞれの2つの要素を比較してソートをかける関数のことです。
比較関数の書き方
function(要素1, 要素2) {
if(要素1 > 要素2) {
return 0より大きい数値;
} else if(要素1 < 要素2) {
return 0より小さい数値;
} else {
return 0;
}
}
説明
関数の引数に指定した要素1と要素2を比較し、
要素1が要素2よりも大きければ、0より大きい数値を返します。
0より大きい数値を返すことで、要素1が要素2よりも後にくるようにソートされます。
要素1が要素2よりも小さければ、0より小さい数値を返します。
0より小さい数値を返すことで、要素1が要素2よりも先にくるようにソートされます。
それ以外の場合はそのままになります。
このようにすることで配列の要素が昇順にソートされる形になります。
では、比較関数を使った例を見ていきましょう。
比較関数の使用例
let array = [3, 5, 10, 2, 4];
array.sort(function(a, b) {
if(a > b) {
return 1;
} else if(a < b) {
return -1;
} else {
return 0;
}
});
console.log(array);
この例では、比較関数の2つの要素をa・bとし、
aがbよりも大きければ、1(0よりも大きい数値)を返します。
1を返すことでaがbよりも後にくるようにソートされるわけですね。
aがbよりも小さければ、-1(0よりも小さい数値)を返します。
-1を返すことでaがbよりも前にくるようにソートされるわけですね。
そのどちらでもない場合は、0を返します。
0を返すことで順番はそのままになりますね。
では結果を見てみると、
こうですね。
小さい数値から順にソートがされています。
では、次に日付からなる配列をソートする方法についてみていきたいと思います。
日付からなる配列をソートする方法
では、日付からなる配列をソートする方法について見ていきましょう。
let dates = ["2021/03/09", "2001/03/09", "2021/02/09", "2021/03/10"];
dates.sort(function(a,b) {
if(a > b) {
return 1;
} else if(a < b) {
return -1;
} else {
return 0;
}
});
console.log(dates);
この例では、配列の要素をyyyy/mm/ddと表現しています。
このように表現することで、要素を正しくソートさせることができます。
もし、[“2021/3/9”, “2001/3/9”, “2021/2/9”, “2021/3/10”]という形の配列にした場合、
2021/3/10が2021/3/9よりも先にくるようにソートされてしまいます。
では、結果を見ていると
こうですね。
ちゃんと、昇順に並べ替えられています。
まとめ
このように、sort()を用いることで、配列の要素にソートを加えることができます。
sort()の引数には比較関数を指定することができ、数値を並び替える時などに用いることで
正しい順番でソートをすることができます。
日付をソートするためには、配列の要素をyyyy/mm/ddで指定します。
コメント