JavaScriptで配列の要素をソートする方法

JavaScriptで配列をソートする方法 JavaScript

この記事では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つの要素をabとし、

aがbよりも大きければ、1(0よりも大きい数値)を返します。
1を返すことでaがbよりも後にくるようにソートされるわけですね。

aがbよりも小さければ、-1(0よりも小さい数値)を返します。
-1を返すことでaがbよりも前にくるようにソートされるわけですね。

そのどちらでもない場合は、0を返します。
0を返すことで順番はそのままになりますね。

では結果を見てみると、

JavaScriptでsort()関数を使った例

こうですね。
小さい数値から順にソートがされています。

では、次に日付からなる配列をソートする方法についてみていきたいと思います。

日付からなる配列をソートする方法

では、日付からなる配列をソートする方法について見ていきましょう。

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よりも先にくるようにソートされてしまいます。

では、結果を見ていると

JavaScriptで日付からなる配列をソートする例

こうですね。
ちゃんと、昇順に並べ替えられています。

まとめ

このように、sort()を用いることで、配列の要素にソートを加えることができます。

sort()の引数には比較関数を指定することができ、数値を並び替える時などに用いることで
正しい順番でソートをすることができます。

日付をソートするためには、配列の要素をyyyy/mm/ddで指定します。

コメント

タイトルとURLをコピーしました