1. 空配列のときは新作だけが入る
  2. 要素が 1 つのときは下書きが消えて新作だけになる
  3. 先頭が消えて末尾に新作が足される
  4. 要素が 3 つでも順番が保たれる
コース一覧
JavaScript基礎文法:処理を組み立てる
要素を足す・取り除く

JavaScript基礎文法:処理を組み立てる

if・switch による条件分岐、配列とループ、関数とコールバック、オブジェクトを順に組み立てる全 33 レッスン(525 分)の基礎文法コースです。FizzBuzz、作品リスト、関数への整理、作品データの構造化を通して、入力から結果を返す処理を自分で分解して書きます。DOM 操作は次のコースで扱います。

1
条件分岐
01. if 文の基本15分
02. if / else if / else で段階判定15分
03. switch 文で値を一覧から選ぶ15分
04. 条件を組み合わせる20分
05. FizzBuzz で複数条件を組み立てる20分
06. つくる 時間帯で挨拶を変える20分
07. 第1章まとめクイズ10分
2
配列とループ
01. 配列のきほん15分
02. 要素を足す・取り除く15分
03. for ループで合計を求める15分
04. for-of で配列を走査する15分
05. while で条件を満たす間くり返す15分
06. break と continue でループを制御する15分
07. つくる 作品リストを一覧にする20分
08. 第2章まとめクイズ10分
3
関数
01. 関数宣言15分
02. アロー関数15分
03. デフォルト引数15分
04. 早期 return でネストを浅くする15分
05. 変数のスコープ15分
06. コールバック関数15分
07. forEach で配列をまわす15分
08. つくる 処理を関数に整理する20分
09. 第3章まとめクイズ10分
4
オブジェクト
01. オブジェクトのきほん18分
02. オブジェクトで複数の値を返す16分
03. const と参照18分
04. ?. で安全に取り出す16分
05. 分割代入18分
06. スプレッド構文18分
07. find と includes で探す16分
08. つくる 作品データを構造化する25分
09. 第4章まとめクイズ10分

要素を足す・取り除く

push と pop、unshift と shift
解説

このレッスンで分かること

  • push で末尾に足し、pop で末尾から取り除けます
  • unshift で先頭に足し、shift で先頭から取り除けます
  • push が返すのは配列ではなく、追加後の要素数です

作ったあとに、中身を差し替えたい

前のレッスンで、作品を 1 つの配列にまとめました。ですがプロフィールサイトは作って終わりではありません。新しい作品ができれば足したいですし、公開をやめた作品は取り除きたい。配列は、作ったあとから中身を変えられる入れ物です。そのための道具が次の 4 つです。

メソッド何をするか戻り値
push末尾に足す追加後の要素数
pop末尾から取り除く取り除いた要素
unshift先頭に足す追加後の要素数
shift先頭から取り除く取り除いた要素

名前が 4 つ出てくると混乱しますが、覚えかたは単純です。push と pop は末尾、unshift と shift は先頭。そして push と unshift が足す側、pop と shift が取り除く側です。

JavaScript

const works = ["プロフィールサイト", "自己紹介カード"]; works.push("スキル一覧の表"); console.log(works.length); // => 3 const removed = works.pop(); console.log(removed); // => スキル一覧の表 console.log(works.length); // => 2

取り除く側は、取り除いた要素そのものを返すので、受け取ってすぐ使えます。空配列に pop や shift を呼んでもエラーにはならず、undefined が返るだけです。配列は空のままです。

push が返すのは配列ではない

ここが今回いちばんの引っかかりどころです。push の戻り値は、追加したあとの要素数です。配列そのものではありません。

JavaScript

const works = ["プロフィールサイト"]; const result = works.push("自己紹介カード"); console.log(result); // => 2 (配列ではなく数値) console.log(works); // => ["プロフィールサイト", "自己紹介カード"]

push は works という配列そのものを直接書き換えます。ですから戻り値を受け取る必要はなく、works をそのまま使えばよいのです。return works.push(値) と書いてしまうと、関数が数値を返してしまい、配列を期待するテストは通りません。足したあとで、配列そのものを返してください。

解説

「メソッドを呼んだ結果をそのまま返す」書きかたは多くの場面で正解なので、つい return とひと続きに書いてしまいます。配列を書き換える系のメソッドは、書き換えたあとの配列ではなく別の値を返すものが多い、と覚えておいてください。

先頭を取り除くと、残りが 1 つずつ前へ詰まる

先頭側の操作も見ておきます。unshift は先頭に足し、もとからあった要素は 1 つずつうしろへずれます。shift は先頭を取り除き、残りが 1 つずつ前へ詰まります。

JavaScript

const works = ["旧トップページ", "プロフィールサイト", "自己紹介カード"]; const removed = works.shift(); console.log(removed); // => 旧トップページ console.log(works[0]); // => プロフィールサイト

4 つとも、呼んだ時点で works の中身がもう変わっています。どちらを使うかは「新しいものをどこに置きたいか」で決めます。古い順に並べたいなら新作は末尾へ、新しいものを一番上に出したいなら先頭へ。表示の順番から逆算して選んでください。

よくある間違い

  • カッコを忘れる — works.pop と書くと関数そのものを取り出しただけで、何も取り除かれません。メソッドは必ず () を付けて呼びます
  • pop と shift を取り違える — pop は末尾、shift は先頭です。名前から向きが読み取りにくいので、迷ったら表を見返してください

要件

  1. 関数名は updateWorkList、引数は配列 works と文字列 newTitle の 2 つ、戻り値は配列
  2. 先頭の要素を shift で取り除いてから、newTitle を push で末尾に足すこと
  3. return works.push(newTitle) と書かないこと (push の戻り値は数値なので配列にならない)

入出力例

updateWorkList([], "プロフィールサイト") → ["プロフィールサイト"] updateWorkList(["下書き"], "プロフィールサイト") → ["プロフィールサイト"] updateWorkList(["下書き","自己紹介カード"], "スキル一覧の表") → ["自己紹介カード","スキル一覧の表"] updateWorkList(["下書き","プロフィールサイト","自己紹介カード"], "スキル一覧の表") → ["プロフィールサイト","自己紹介カード","スキル一覧の表"]

ヒント

やることは 2 つだけです。先頭を取り除く、末尾に足す。順番どおりに 1 行ずつ書きます

先頭を取り除くのは `works.shift()`、末尾に足すのは `works.push(newTitle)` です

`push` の戻り値は追加後の要素数なので、最後は `return works;` と配列そのものを返します

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • for ループで合計を求める

    `for` 文の 3 つの式を学び、配列の要素をインデックスで順番に取り出して合計する関数を書きます。

  • for-of で配列を走査する

    配列の全要素を先頭から順に処理する専用の構文が `for-of` です。インデックスを書かずに要素そのものを受け取れます。

  • while で条件を満たす間くり返す

    回数ではなく条件でくり返しを制御する構文が `while` です。終わりが事前に決まらない処理を書けるようになります。

  • break と continue でループを制御する

    ループを途中で抜ける `break` と、今の周だけ飛ばす `continue` を学びます。条件に合わないデータを除きながら回せるようになります。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 配列サイズ固定の同型データの集まり
  • 素数1 と自分自身でしか割り切れない自然数
  • メソッドクラスに属する関数
  • 戻り値呼び出し元への返答を表す点線矢印
  • branchGit で開発するときに毎日打つ 5 つの基本コマンド
  • pushローカルの変更をリモートへ送る操作
  • 関数処理に名前を付けて再利用できる単位
  • テストバグを見つける工程
main.js
学習モード
エディタを読み込んでいます

メモ

要素を足す・取り除く

⌘S で保存