JavaScriptで文字列、数値、オブジェクトの配列を並べ替える方法を紹介します。
1. 文字列配列のソート
文字列配列の場合、次のように sort()
を呼び出すと、アルファベット順にソートされます。 (昇順)
const arr = ['kiwi', 'apple', 'melon', 'grape', 'banana'];
arr.sort();
console.log(arr);
Output:
[ 'apple', 'banana', 'grape', 'kiwi', 'melon' ]
1.1 降順のソート
降順でソートするには、 sort()
で文字列を降順でソートする比較関数を作成し、引数に渡す必要があります。
比較する2つの文字列のサイズが等しい場合は0、大きい場合は正数、小さい場合は負の数を返すように実装すると降順でソートされます。
const arr = ['kiwi', 'apple', 'melon', 'grape', 'banana'];
arr.sort(function (a, b) {
if (a > b) return -1;
else if (b > a) return 1;
else return 0;
});
console.log(arr);
Output:
[ 'melon', 'kiwi', 'grape', 'banana', 'apple' ]
関数を実装するのが面倒な場合は、 sort()
で昇順にソートした後、 reverse()
を呼び出して配列の順序を変更して降順と同じ結果を作成するように実装できます。
const arr = ['kiwi', 'apple', 'melon', 'grape', 'banana'];
arr.sort();
arr.reverse();
console.log(arr);
Output:
[ 'melon', 'kiwi', 'grape', 'banana', 'apple' ]
2. 数値配列の並べ替え
2.1 間違った方法
数値配列に sort()
を実行すると、数値を文字列に変換してソートします。文字列 11
は 2
より小さいため、以下のように数値サイズで並べ替えられません。したがって、この方法でソートしないでください。
const arr = [22, 11, 2, 9, 1, 5];
arr.sort();
console.log(arr);
Output:
[ 1, 11, 2, 22, 5, 9 ]
2.2 正しい方法(昇順)
sort()
に 2 つの数字を比較する関数を実装して引数に渡す必要があります。以下のように a - b
の値を返すように実装すると昇順になります。 a が大きい場合は正数、b が大きい場合は負、等しい場合は 0 が返されるため、このように簡単に実装できます。
const arr = [22, 11, 2, 9, 1, 5];
arr.sort(function (a, b) {
return a - b;
});
console.log(arr);
Output:
[ 1, 2, 5, 9, 11, 22 ]
2.3 正しい方法(降順)
降順は比較関数で b - a
の値を返すだけです。以下のように簡単に実装できます。
const arr = [22, 11, 2, 9, 1, 5];
arr.sort((a, b) => b - a);
console.log(arr);
Output:
[ 22, 11, 9, 5, 2, 1 ]
3. オブジェクト配列の比較
オブジェクト配列の並べ替えも、以下のように比較関数を実装できます。オブジェクトで比較する要素を選択してサイズを比較するだけです。
const arr = [
{id: 22, name: 'kiwi' },
{id: 11, name: 'apple' },
{id: 2, name: 'melon' },
{id: 9, name: 'grape' }
];
arr.sort((a, b) => a.id - b.id);
console.log(arr);
Output:
[
{ id: 2, name: 'melon' },
{ id: 9, name: 'grape' },
{ id: 11, name: 'apple' },
{ id: 22, name: 'kiwi' }
]
上記の例は昇順でソートされます。降順は b.id - a.id
で計算できますか?
Related Posts
- JavaScript - 現在のタイムスタンプを取得する
- Node.js - ファイル、ディレクトリの削除
- JavaScript - 文字列 空白 削除
- JavaScript sort() 関数、例の紹介
- JavaScript Set delete() 関数、値の削除
- JavaScript - 実行時間の測定方法
- JavaScript - 配列をオブジェクトに変換する4つの方法
- JavaScript - Mapの作成と初期化、3つの方法
- JavaScript - Map巡回、3つの方法
- JavaScript - Mapソート(キーまたはvalueでソート)
- JavaScript - オブジェクトに特定の値が存在することを確認する
- JavaScript - 数値がNaNであるかどうかを確認する方法
- JavaScript Enum (列挙型)
- JavaScript - 日付/時刻比較、3つの 方法
- JavaScript - 空の文字列の確認、2つの方法
- JavaScript - 最後の文字を削除する、4つの方法
- JavaScript - 配列を文字列に変換、3つの方法
- JavaScript - 複数行の文字列、3つの方法
- JavaScript - オブジェクトを文字列に変換する2つの方法
- JavaScript - 配列から重複排除、4つの方法
- JavaScript - 文字列の比較方法、5つの方法
- JavaScript - 文字列から数字のみを抽出する
- JavaScript - 配列のソート方法(昇順、降順)
- JavaScript - 文字列 切り出し(split、substr、substring、slice)
- JavaScript - Setを配列(Array)に変換する
- JavaScript - 文字列を配列(Array)に変換
- JavaScript - 関数の宣言方法
- JavaScript - 配列宣言、追加、削除などの基本的 な使用法のクリーンアップ
- JavaScript - 文字列を数値に変換する方法
- JavaScript - 文字列を結合する、接続する(concat、join、+)