🐥

【初心者】pushとpopを使った配列の回し方

2024/03/12に公開

はじめに

配列を処理するコードを書いているとpushとpopについて調べることがあったので備忘録のためにまとめておきます。

pushとpopとは

まずpushとpopの違いについてまとめてみます。

  • push
    • 配列の末尾に1つ以上の要素を追加する。
    • 引数として渡された値が配列の新しい要素として追加される
    • 配列の長さを変更する
    • 追加後の配列の新しい長さを返す
  • pop
    • 配列の末尾から1つ以上の要素を削除する。
    • 配列の最後の要素を取り出し、その要素を配列から削除する。
    • 配列の長さを変更する
    • 削除された要素を返す

pushは追加、popは削除ですが最後の行の何を返すかは特に大事です。
コードにしてみるとわかりやすいので簡単な例えを貼っておきます。

pushのサンプルコード

const pushFruits = ["apple", "banana"];
// pushで末尾の要素を一つ入れる
const newLength = pushFruits.push("orange");
console.log(pushFruits); // ['apple', 'banana', 'orange']
console.log(newLength); // 3

返す値はorangeを追加した3になっています。

popのサンプルコード

const popFruits = ["apple", "banana", "orange"];
// popで末尾の要素を一つ取り出す
const removedFruit = popFruits.pop();
console.log(popFruits); // ['apple', 'banana']
console.log(removedFruit); // 'orange'

返す値は削除した要素のorangeになっています。

配列のループ処理で使う

与えられた数字の配列で奇数を返すプログラムをpushとpopを使って書いてみました。

  • pushの場合
function odd(numbers) {
    const oddNumbers = [];
    for (let i = 0; i < numbers.length; i++) {
        if (numbers[i] % 2 !== 0) {
            oddNumbers.push(numbers[i]);
        }
    }
    return oddNumbers;
}

console.log(odd([1, 2, 3, 4, 5]));
  • popの場合
function odd(numbers) {
  const oddNumbers = [];
  const reversedNumbers = numbers.reverse(); // 配列を反転させる

  while (reversedNumbers.length > 0) {
    const num = reversedNumbers.pop(); // 末尾の要素を取り出す

    if (num % 2 !== 0) {
      oddNumbers.push(num); // 奇数の場合、oddNumbers 配列に追加
    }
  }

  return oddNumbers.reverse(); // 結果の配列を反転させて元の順序に戻す
}

pushを使って書く方が短くていいのですが、popで書いてみると、これはこれで挙動も知れていい練習になりました。

ではまた!

Discussion