【JavaScript】reverse – 配列の要素を逆順に並び替る

JavaScriptで配列の要素を逆順に並び替えたい場合、reverse()メソッドを使用します。今回は、reverse()の基本的な使い方から使用時の注意点までをまとめていきたいと思います。

reverse()メソッドとは?

reverse()メソッドは、配列の要素の順番を反転(逆順に並び替え)するメソッドです。

基本構文

JavaScript
array.reverse();
特徴
元の配列を変更(破壊的)する
戻り値は逆順に並び替えられた配列

基本的な使い方

配列を逆順に並び替える

JavaScript
const numbers = [1, 2, 3, 4, 5];
numbers.reverse();

console.log(numbers); // [5, 4, 3, 2, 1]

配列numbersの要素順を逆にします。元の配列が変更される(破壊的処理) ため、numbers自体が逆順になります。

文字列を逆順にする

JavaScript
const str = 'hello';
const reversedStr = str.split('').reverse().join('');

console.log(reversedStr); // 'olleh'

split('')で文字列を1文字ずつの配列 ['h', 'e', 'l', 'l', 'o']にします。reverse()で配列の順番を逆にし、join('')で配列を文字列に戻します。

サンプルコード

配列のコピーを逆順にする(元の配列を保持する方法)

JavaScript
const colors = ['red', 'blue', 'green'];
const reversedColors = [...colors].reverse();

console.log(colors); // red, blue, green(元の配列は変更なし)
console.log(reversedColors); // green, blue, red(逆順の新しい配列)

reverse()元の配列を変更するため、スプレッド構文 [...colors] を使ってコピーを作成し、元の配列を保持します。

ソートと組み合わせて降順に並び替え

JavaScript
const numbers = [10, 5, 8, 1, 3];
numbers.sort((a, b) => a - b).reverse();

console.log(numbers); // [10, 8, 5, 3, 1]

sort((a, b) => a - b)で昇順に並び替え、reverse()で逆順にすることで、降順に並び替えられます。

スタック(LIFO)の処理を実装

JavaScript
const stack = [];
stack.push('A');
stack.push('B');
stack.push('C');

console.log(stack.reverse().pop()); // 'A'(LIFOの最初の要素)

reverse()を使うと、スタック(後入れ先出し LIFO)の順序を変えられます。

使用時の注意点

reverse()を使用すると、元の配列の順序が変更されるため、元の配列を残したい場合はコピーを作成する。

JavaScript
const original = [1, 2, 3, 4, 5];
const reversed = [...original].reverse();

console.log(original); // [1, 2, 3, 4, 5](変更なし)
console.log(reversed); // [5, 4, 3, 2, 1]

reverse()はnullやundefinedでは使えない

JavaScript
console.log([].reverse()); // [](空配列はそのまま)
console.log(null.reverse()); // エラー!
  • reverse()配列でのみ使用可能です。
  • nullundefinedには適用できないため、事前にチェックする必要があります。

さいごに

  • reverse()配列の順番を反転させるメソッドです
  • 元の配列を変更する(破壊的処理) ので、コピーを作成したい場合は[...]を使いましょう
  • 文字列の逆順は split()reverse()join() を組み合わせます
  • 降順ソートは sort() + reverse() で実現できます