JavaScript Array.sort() メソッド - 配列を正しくソートする

Array.sort()を比較関数で完全マスター。数値、文字列、オブジェクト、日付のソート。デフォルト文字列ソートの落とし穴とtoSorted()(ES2023)を網羅。無料リファレンス。

Ordering

詳細な説明

Array.sort()を理解する

Array.sort()は要素をその場でソートし、ソートされた配列を返します。比較関数がない場合、要素は文字列に変換されUTF-16コードユニット順でソートされます。

デフォルトソートの落とし穴

// 間違い — デフォルトは文字列としてソート!
[10, 1, 21, 2].sort();
// 結果: [1, 10, 2, 21](文字列順)

// 正しい — 数値には比較関数を使用
[10, 1, 21, 2].sort((a, b) => a - b);
// 結果: [1, 2, 10, 21]

比較関数のルール

比較関数は以下を返す必要があります:

  • 負の値 — aがbの前に来る場合
  • ゼロ — 等しい場合
  • 正の値 — aがbの後に来る場合

sort()は変更を加える!

sort()は元の配列を変更します。元を保持する必要がある場合:

// ES2023以前の回避策
const sorted = [...arr].sort((a, b) => a - b);

// ES2023: toSorted()
const sorted = arr.toSorted((a, b) => a - b);
// arrは変更されない

パフォーマンス

sort()は実装依存のアルゴリズム(V8/SpiderMonkeyでは通常TimSort)を使用し、平均計算量はO(n log n)です。

ユースケース

sort()はリストのアルファベット順ソート、テーブルの列ソート、日付や優先度による並べ替え、カスタム順序ロジックの実装に使用します。不変性が必要なReact状態の更新にはtoSorted()を使用します。

試してみる — JavaScript Array Methods Reference

フルツールを開く