JavaScriptで配列の並べ替え – array.sort()とarray.reverse()
JavaScriptでは、配列を並べ替えるためにarray.sort()とarray.reverse()という2つのメソッドを使用します。このページでは、それぞれの使い方やカスタマイズ方法について詳しく解説します。
- array.sort()の使い方
- カスタム比較関数を使用した並べ替え
- 数値の配列をソートする方法
- array.reverse()の使い方
- array.sort()とarray.reverse()を組み合わせる
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()
を組み合わせることで、並べ替えの柔軟性を高めることができます。