【JavaScript】push / pop – 配列を操作するメソッド

JavaScriptの配列を操作するメソッドの中でも、push()pop()は特に使用頻度が高いものです。今回は、これらのメソッドの使い方をまとめていきたいと思います。

push()メソッドとは?

push()メソッドは、配列の末尾に新しい要素を追加するためのメソッドです。追加した結果、配列の新しい長さ(要素数)が返されます。

基本的な使い方

JavaScript
// 配列を定義
let sweets = ['ドーナツ', 'ケーキ'];

// 配列の末尾に要素を追加
let newLength = sweets.push('クッキー');

console.log(sweets); // ["ドーナツ","ケーキ","クッキー"]
console.log(newLength); // 3(新しい配列の長さ)

複数の要素を追加

push()は複数の要素を同時に追加することも可能です。

JavaScript
let drinks = ['カフェオレ', 'カプチーノ'];
drinks.push('カフェラテ', 'エスプレッソ');
console.log(drinks); // ["カフェオレ","カプチーノ","カフェラテ","エスプレッソ"]

pop()メソッドとは?

pop()メソッドは、配列の末尾の要素を削除し、その削除した要素を返すメソッドです。

基本的な使い方

JavaScript
let numbers = [1, 2, 3, 4, 5];

// 配列の末尾の要素を削除
let lastElement = numbers.pop();

console.log(numbers); // [1, 2, 3, 4]
console.log(lastElement); // 5(削除された要素)

サンプルコード

スタック(LIFO: Last In First Out)の実装

push()pop()を使うことで、スタック(後入れ先出し)のデータ構造を簡単に実装できます。

See the Pen Untitled by tones (@tonescodedesign) on CodePen.

JavaScript
let stack = [];

// データを追加(プッシュ)
stack.push('データ1');
stack.push('データ2');
stack.push('データ3');
console.log(stack); // ['データ1', 'データ2', 'データ3']

// データを取り出し(ポップ)
let removedData = stack.pop();
console.log(stack); // ['データ1', 'データ2']
console.log(removedData); // 'データ3'

ブラウザの戻るボタンのような動作

ブラウザの履歴のように、push()で新しいページを追加し、pop()で前のページに戻るような処理ができます。

See the Pen Untitled by tones (@tonescodedesign) on CodePen.

JavaScript
let history = [];

// 新しいページを訪問すると、履歴に追加
function visitPage(page) {
    history.push(page);
    console.log(`訪問したページ: ${page}`);
    console.log(`現在の履歴: ${history.join(' -> ')}`);
}

// 戻るボタンのような動作
function goBack() {
    if (history.length > 1) { // 履歴が1ページ以上ある場合のみ戻る
        let lastPage = history.pop(); // 最後のページを削除
        let currentPage = history[history.length - 1]; // 現在のページを取得
        console.log(`戻る: ${lastPage} -> 現在のページ: ${currentPage}`);
    } else {
        console.log('履歴がありません、戻れません');
    }
}

// ページを訪問
visitPage('ホーム');
visitPage('商品一覧');
visitPage('商品詳細');

// 戻る
goBack(); // 商品詳細 -> 商品一覧
goBack(); // 商品一覧 -> ホーム
goBack(); // 履歴がありません

使用時の注意点

pop()は配列が空の時にundefinedを返す

配列が空の状態で pop()を実行するとundefinedが返ります。

JavaScript
let emptyArray = [];
console.log(emptyArray.pop()); // undefined

push()とpop()は元の配列を変更する

これらのメソッドは元の配列を変更するため、副作用に注意が必要です。特に、関数の中で配列を操作する場合は、予期しない変更が起こらないように注意しましょう。

pop() を多用するとパフォーマンスに影響が出る場合がある

大量のデータを扱う場合、pop()による頻繁な削除がパフォーマンスに影響を与えることがあります。pop()の代わりに slice()を使って新しい配列を作成する方法も検討してみましょう。

さいごに

push()pop()は配列の末尾に要素を追加・削除する便利なメソッドです。特にスタックの実装などに役立ちます。ただし、以下の点には注意しましょう。

  • push()は複数の要素を同時に追加できます
  • pop()は要素を削除し、その値を返します(空の配列ではundefinedになる)
  • 配列を直接変更するため、副作用に注意しましょう
  • 大量のデータ処理には別の方法も検討しましょう