JavaScriptで配列の並べ替え – array.sort()とarray.reverse()

JavaScriptで配列の並べ替え – array.sort()とarray.reverse()

JavaScriptでは、配列を並べ替えるためにarray.sort()array.reverse()という2つのメソッドを使用します。このページでは、それぞれの使い方やカスタマイズ方法について詳しく解説します。

array.sort()の使い方

array.sort()メソッドは、配列の要素を並べ替えます。このメソッドは、デフォルトでは要素を文字列として辞書順(Unicode順)にソートします。

基本的な使用例

const fruits = ["banana", "apple", "cherry"];
fruits.sort();
console.log(fruits); // 出力: ["apple", "banana", "cherry"]

上記の例では、fruits.sort()を使用して配列をアルファベット順に並べ替えました。

デフォルトの動作による注意点

デフォルトのソートでは、要素を文字列として扱うため、数値を含む配列では意図しない結果になることがあります。

const numbers = [10, 1, 20, 2];
numbers.sort();
console.log(numbers); // 出力: [1, 10, 2, 20]

この場合、数値としてではなく文字列として比較されるため、意図した並べ替えを行うにはカスタム比較関数が必要です。

カスタム比較関数を使用した並べ替え

並べ替えの挙動をカスタマイズするためには、比較関数array.sort()に渡す必要があります。比較関数は2つの引数を取り、それらの大小関係を示す値を返します。

const numbers = [10, 1, 20, 2];
numbers.sort((a, b) => a - b); // 昇順
console.log(numbers); // 出力: [1, 2, 10, 20]

比較関数では、次のような値を返す必要があります:

  • 負の値: aをbの前に置く。
  • 0: aとbの順序を変更しない。
  • 正の値: bをaの前に置く。

降順で並べ替える例

const numbers = [10, 1, 20, 2];
numbers.sort((a, b) => b - a); // 降順
console.log(numbers); // 出力: [20, 10, 2, 1]

数値の配列をソートする方法

数値の配列を並べ替える際には、カスタム比較関数を使用することがほぼ必須です。次の例では、複数の並べ替え方法を示します。

昇順に並べ替える

const scores = [45, 12, 85, 32, 89, 39];
scores.sort((a, b) => a - b);
console.log(scores); // 出力: [12, 32, 39, 45, 85, 89]

降順に並べ替える

const scores = [45, 12, 85, 32, 89, 39];
scores.sort((a, b) => b - a);
console.log(scores); // 出力: [89, 85, 45, 39, 32, 12]

絶対値で並べ替える

const numbers = [-3, 5, -1, 2, -4];
numbers.sort((a, b) => Math.abs(a) - Math.abs(b));
console.log(numbers); // 出力: [-1, 2, -3, -4, 5]

array.reverse()の使い方

array.reverse()メソッドは、配列の要素を逆順に並べ替えます。このメソッドはarray.sort()と併用されることが多いです。

基本的な使用例

const fruits = ["banana", "apple", "cherry"];
fruits.reverse();
console.log(fruits); // 出力: ["cherry", "apple", "banana"]

array.sort()と組み合わせた例

const fruits = ["banana", "apple", "cherry"];
fruits.sort().reverse();
console.log(fruits); // 出力: ["cherry", "banana", "apple"]

array.sort()とarray.reverse()を組み合わせる

複雑な並べ替えのニーズに対応するために、array.sort()array.reverse()を組み合わせて使用することが可能です。

例: アルファベット順に並べて逆順にする

const names = ["John", "Alice", "Bob"];
names.sort().reverse();
console.log(names); // 出力: ["John", "Bob", "Alice"]

例: 数値を昇順に並べた後、逆順にする

const numbers = [10, 1, 20, 2];
numbers.sort((a, b) => a - b).reverse();
console.log(numbers); // 出力: [20, 10, 2, 1]

このようにarray.sort()array.reverse()を組み合わせることで、並べ替えの柔軟性を高めることができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です