HOWTO · JavaScript

JavaScript カスタム sort() 関数

JavaScript 配列は、文字列、ブール値、数値など、任意の型の値のリストです。シナリオによっては、JavaScript 配列を並べ替える必要があり、sort() メソッドを使用できます。 sort() メソッドの重要な点は、ユーザー定義のカスタム比較関数を独自のルールで渡すことができることです。

このページの内容

この記事では、JavaScript 配列に対する並べ替え操作について説明します。

JavaScript の sort() メソッド

sort() メソッドは、配列内の要素を並べ替えるために使用されます。 デフォルトでは、このメソッドは要素を昇順でソートします。

通常、このメソッドは要素の位置を変更して元の配列を変更します。 さらに、sort() メソッドは入力配列要素を文字列にキャストし、文字列比較を行って要素を並べ替えます。

数値の配列を入力すると、それらの数値は最初に文字列値に変換されてから比較されます。 数値の配列を作成し、sort() メソッドを使用して並べ替えましょう。

コード例:

let numericArray = [100, 3, 66, 23, 200, 500];
numericArray.sort();
console.log(numericArray);

出力:

数字の配列をソート

これは期待どおりに注文されていません。 これを修正するには、sort() メソッドをカスタマイズする必要があります。

カスタム比較関数を引数として渡すことができます。 この比較関数は 2つの引数を受け入れ、渡された引数に適用される規則によって並べ替え順序が決定されます。

カスタム sort() メソッドを使用して、JavaScript で数値の配列をソートする

数値の配列をソートするには、次に示すように比較関数を実装する必要があります。

compare(a, b) 関数からの戻り値が 0 未満の場合、sort() メソッドは b の前に a を配置します。

逆の場合、b は a の前に配置されます。 compare(a, b) 関数が 0 を返すたびに、a と b の位置は変わりません。

したがって、以下に示すように、カスタム比較関数を sort() メソッドに渡すことができます。

コード例:

let numericArray = [100, 3, 66, 23, 200, 500];
numericArray.sort(function(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
  return 0;
});
console.log(numericArray);

出力:

独自の sort() メソッドを使用して数値の配列をソート

予想どおり、配列は適切にソートされました。 これは、ユーザーが順序を決定できる JavaScript sort() メソッドの非常に便利な機能です。