JavaScript 逆引き集 | 配列を逆順

JavaScript JavaScript
スポンサーリンク
スポンサーリンク

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"](同じ配列)
JavaScript

rarr も、同じ配列を指しています。 「元の順番を残しておきたい」場合は、必ずコピーしてから 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点を理解しておくことが、 配列操作を安全に、そしてスマートに書くための大事な一歩になります。

タイトルとURLをコピーしました