reverse は「配列の並びを前後ひっくり返すスイッチ」
arr.reverse() は、配列の順番をその場で逆向きにするメソッドです。 天才プログラマー視点で言うと、「並び順を単純に前後逆にしたいときの最短ルート」が reverse です。
[1, 2, 3] が [3, 2, 1] になる、というイメージをまず持ってください。
基本動作:その場で前後を入れ替える
一番シンプルな例から見てみます。
const arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1]
JavaScriptここで重要なのは、新しい配列を返すのではなく、元の配列そのものが書き換わるという点です。 reverse() を呼んだ瞬間、配列の中身の順番が前後逆になります。
破壊的メソッドであることを深掘りする(ここが重要)
reverse は 破壊的メソッドです。 つまり、「元の配列をその場で変更する」タイプのメソッドです。
const arr = ["A", "B", "C"];
const r = arr.reverse();
console.log(arr); // ["C", "B", "A"]
console.log(r); // ["C", "B", "A"](同じ配列)
JavaScriptr も arr も、同じ配列を指しています。 「元の順番を残しておきたい」場合は、必ずコピーしてから reverse() する必要があります。
const arr = ["A", "B", "C"];
const reversed = [...arr].reverse();
console.log(arr); // ["A", "B", "C"]
console.log(reversed); // ["C", "B", "A"]
JavaScriptこの「スプレッドでコピーしてから reverse」は、現場でもよく使われる安全なパターンです。
例題:最新データを先頭に持ってきたいとき
例えば、日付順に並んだログがあるとします。
const logs = [
"2024-01-01",
"2024-01-02",
"2024-01-03"
];
logs.reverse();
console.log(logs);
// ["2024-01-03", "2024-01-02", "2024-01-01"]
JavaScript「古い順」から「新しい順」に並び替えるのではなく、 「単純に前後を逆にしたいだけ」なら、reverse() が一番シンプルです。
sort と reverse の組み合わせ
reverse は、sort と組み合わせるとさらに便利になります。
const arr = [10, 2, 5, 1];
arr.sort((a, b) => a - b); // 昇順: [1, 2, 5, 10]
arr.reverse(); // 逆順: [10, 5, 2, 1]
console.log(arr); // [10, 5, 2, 1]
JavaScriptもちろん、降順ソートなら sort((a, b) => b - a) でも書けますが、 「とりあえず昇順にしてから逆順にする」という発想は、 reverse の役割を理解するうえで分かりやすいです。
まとめ:reverse は「順番をその場でひっくり返すためのスイッチ」
arr.reverse() を使いこなせると、 「並び順を逆にしたいだけ」の場面で、余計なロジックを書かずに済みます。
ただし、
元の配列を直接書き換える破壊的メソッドであること。 元の順番を残したいなら、[...arr].reverse() とすること。
この2点を理解しておくことが、 配列操作を安全に、そしてスマートに書くための大事な一歩になります。
