カテゴリ: JavaScript 更新日: 2026/02/04

JavaScriptの配列から要素を削除する方法(pop, shift, spliceなど)完全ガイド

JavaScriptの配列から要素を削除する方法(pop, shift, spliceなど)
JavaScriptの配列から要素を削除する方法(pop, shift, spliceなど)

先生と生徒の会話形式で理解しよう

生徒

「先生、JavaScriptの配列から要素を取り除きたいときはどうすればいいですか?」

先生

「配列の要素を削除するにはいくつか方法があります。代表的なのは popshift、そして splice です。」

生徒

「それぞれどう違うんですか?名前が難しそうで不安です…」

先生

「大丈夫ですよ。順番に、簡単に使い方と特徴を説明しますね。」

1. popメソッドで末尾の要素を削除

1. popメソッドで末尾の要素を削除
1. popメソッドで末尾の要素を削除

popは配列の一番後ろ(末尾)の要素を取り除くメソッドです。最後に入れたものを取り除きたいときに便利です。


let fruits = ["りんご", "バナナ", "みかん"];
let removed = fruits.pop();
console.log(fruits);
console.log(removed);

["りんご", "バナナ"]
みかん

このように、配列の最後の要素「みかん」が取り除かれ、戻り値として取り除いた要素が返ってきます。

2. shiftメソッドで先頭の要素を削除

2. shiftメソッドで先頭の要素を削除
2. shiftメソッドで先頭の要素を削除

shiftは配列の一番先頭の要素を取り除きます。最初に入れたものを取り除きたいときに使います。


let fruits = ["りんご", "バナナ", "みかん"];
let removed = fruits.shift();
console.log(fruits);
console.log(removed);

["バナナ", "みかん"]
りんご

先頭の「りんご」が取り除かれて、配列には残りの要素だけになります。

3. spliceメソッドで好きな位置の要素を削除

3. spliceメソッドで好きな位置の要素を削除
3. spliceメソッドで好きな位置の要素を削除

spliceは配列の好きな位置から要素を削除したいときに使います。例えば途中の要素を取り除くことができます。


let fruits = ["りんご", "バナナ", "みかん", "ぶどう"];
// 1番目の要素(バナナ)を1個削除
let removed = fruits.splice(1, 1);
console.log(fruits);
console.log(removed);

["りんご", "みかん", "ぶどう"]
["バナナ"]

splice(開始位置, 削除数)の形で使い、削除した要素が配列として返ってきます。

4. 複数の要素をまとめて削除する方法

4. 複数の要素をまとめて削除する方法
4. 複数の要素をまとめて削除する方法

spliceは削除数を増やすことで複数の要素を一気に削除できます。


let nums = [1, 2, 3, 4, 5];
// 1番目から3個削除(2,3,4が削除される)
let removed = nums.splice(1, 3);
console.log(nums);
console.log(removed);

[1, 5]
[2, 3, 4]

このように、複数の要素も簡単にまとめて削除できます。

5. 削除した要素の使い道

5. 削除した要素の使い道
5. 削除した要素の使い道

popshiftspliceは削除した要素を戻り値として返します。何が削除されたか確認したり、別の場所に使ったりすることができます。


let colors = ["赤", "青", "緑"];
let last = colors.pop();
console.log("削除した色は " + last);

削除した色は 緑

削除と同時に情報を取り出せるので便利です。

6. 削除メソッドの選び方まとめ

6. 削除メソッドの選び方まとめ
6. 削除メソッドの選び方まとめ
  • pop: 配列の後ろから1つ削除したいとき
  • shift: 配列の前から1つ削除したいとき
  • splice: 好きな位置から複数の要素を削除したいとき

状況に合わせて使い分けましょう。

7. 注意点:配列の要素数(length)との関係

7. 注意点:配列の要素数(length)との関係
7. 注意点:配列の要素数(length)との関係

要素を削除すると配列の長さを表す length プロパティは自動で減ります。配列のサイズは常に最新の状態になりますので安心してください。

8. 実用例:タスク管理アプリで削除を使う

8. 実用例:タスク管理アプリで削除を使う
8. 実用例:タスク管理アプリで削除を使う

let tasks = ["掃除", "洗濯", "買い物"];
// タスク完了で最後のものを削除
tasks.pop();
// 先頭のタスクが終わったら削除
tasks.shift();
// 途中のタスクを削除
tasks.splice(0, 1);
console.log(tasks);

[]

このように、いろんな場所の要素を簡単に削除して管理できます。

まとめ

まとめ
まとめ

ここまでJavaScriptにおける配列の要素削除について詳しく見てきました。配列操作はプログラミングの基礎中の基礎であり、データの管理やアプリケーションの挙動を制御する上で避けては通れない非常に重要なトピックです。特に今回紹介した popshiftsplice の3つのメソッドは、実務レベルの開発でも頻繁に登場します。それぞれのメソッドが「配列のどこに作用するのか」そして「元の配列をどのように変化させるのか」という特徴を正しく理解しておくことが、バグの少ない綺麗なコードを書くための第一歩となります。

各メソッドの役割と使い分けのポイント

改めて、それぞれのメソッドがどのようなシーンで最も効果を発揮するのかを整理しましょう。まず、最もシンプルで処理速度も速いのが pop メソッドです。これは配列の末尾、つまり最後尾のデータを取り出す際に使用します。例えば、スタック(LIFO: 後入れ先出し)構造を実装したい場合には欠かせない存在です。次に、配列の先頭からデータを取り出す shift メソッド。これはキュー(FIFO: 先入れ先出し)構造の実装に適しています。ただし、shift は先頭を削除した後に残りの全要素のインデックスを1つずつ前にずらす処理が発生するため、非常に巨大な配列を扱う場合にはパフォーマンスに影響を与える可能性があることも覚えておくと良いでしょう。

そして、最も汎用性が高いのが splice メソッドです。特定のインデックスを指定して削除できるだけでなく、一度に複数の要素を削除したり、削除した位置に新しい要素を挿入したりすることも可能です。非常に強力なメソッドですが、引数の指定(開始位置と削除個数)を間違えると予期せぬデータ欠損を招くため、使用時には注意が必要です。

配列操作をより深く理解するための応用コード

基礎を理解したところで、少し応用的なコードを見てみましょう。例えば、配列の中から特定の条件に一致する要素のインデックスを探し出し、その場所を splice で削除するというパターンは非常によく使われます。


// ユーザーリストから特定のユーザーを削除する例
let userList = ["田中", "佐藤", "鈴木", "高橋"];
let targetUser = "鈴木";

// 削除したい要素のインデックスを取得
let targetIndex = userList.indexOf(targetUser);

if (targetIndex !== -1) {
  // 指定した位置から1つだけ削除
  let removedUser = userList.splice(targetIndex, 1);
  console.log(targetUser + "さんを削除しました。");
  console.log("現在のリスト: " + userList);
  console.log("削除されたデータ:", removedUser);
} else {
  console.log(targetUser + "さんは見つかりませんでした。");
}

実行結果の確認

上記のコードを実行すると、コンソールには以下のように表示されます。indexOf で位置を特定し、その値を splice に渡すことで、動的な削除が可能になります。


鈴木さんを削除しました。
現在のリスト: 田中,佐藤,高橋
削除されたデータ: ["鈴木"]

破壊的なメソッドと非破壊的なメソッド

最後に一つ、重要な概念について触れておきます。今回学んだ popshiftsplice はすべて「元の配列を直接書き換える」という特徴を持っています。これをプログラミング用語で「破壊的なメソッド」と呼びます。一方で、元の配列をそのまま残し、要素を削除した「新しい配列」を作りたい場合には、filter メソッドや slice メソッドを使用します。モダンなJavaScript開発(特にReactなどのフレームワークを使用する場合)では、元のデータを変更しない「イミュータビリティ(不変性)」が重視されることが多いため、状況に応じて使い分けられるようになると、中級者への道が開けます。

例えば、filter を使った「非破壊的」な削除は以下のようになります。


let numbers = [10, 20, 30, 40, 50];
// 値が30以外のものだけを抽出して、新しい配列を作成
let newNumbers = numbers.filter(function(value) {
  return value !== 30;
});

console.log("元の配列:", numbers);
console.log("新しい配列:", newNumbers);

元の配列: [10, 20, 30, 40, 50]
新しい配列: [10, 20, 40, 50]

このように、JavaScriptには一つの目的を達成するために複数の手段が用意されています。まずは popsplice で「配列を直接操作すること」に慣れ、徐々に filter などの高度な手法を組み合わせていくのが、効率的な学習の進め方と言えるでしょう。学んだ知識を定着させるためには、実際にコードを書いて動かしてみることが一番の近道です。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!配列から要素を消す方法って、こんなに種類があったんですね。特に splice は万能すぎて、これ一つあれば全部解決しちゃうんじゃないかと思いました!」

先生

「確かに splice はとても便利ですね。でも、末尾を消すだけなら pop の方がコードも短くて読みやすいですし、コンピュータにとっても処理が軽いんですよ。適材適所という言葉がある通り、目的に合った一番シンプルな道具を選ぶのが、プロのプログラマーへの近道なんです。」

生徒

「なるほど…。『何でもできる魔法の杖』を使うより、状況に合わせて使い分ける方がスマートってことですね。あと、最後の filter の話も気になりました。元の配列を壊さない方が安全な時もあるんですか?」

先生

「その通り!例えば、スマートフォンのアプリで前の画面に戻った時、データが勝手に消えていたら困りますよね?元のデータを残しておけば、いつでも前の状態を再現できます。これを『状態管理』と呼んだりしますが、これはもう少し学習が進んでから詳しく勉強しましょう。」

生徒

「そうか、削除って言っても、ただ消せばいいだけじゃないんだ。奥が深いですね…。先生、インデックスの数え方も復習しておきたいんですけど、配列って必ず 0 から始まるんですよね?」

先生

「素晴らしい!大事なポイントです。JavaScriptに限らず多くの言語で配列は 0 番目から数えます。だから 3 番目の要素を消したいときは、インデックスとしては 2 を指定することになります。ここを間違えると全然違うデータが消えてしまうので、慣れるまでは指差し確認しながら練習してみてくださいね。」

生徒

「わかりました!splice(2, 1) みたいな書き方をたくさん練習して、体に覚え込ませたいと思います。まずは自分のToDoリストを配列で作って、終わったものから popshift で消していくプログラムを自力で書いてみます!」

先生

「その意気です!自分で作ったものが動く瞬間が一番楽しいですからね。もしエラーが出たり分からなくなったりしたら、またいつでも聞きに来てください。配列の操作をマスターすれば、データ処理の幅がぐっと広がりますよ。頑張りましょう!」

生徒

「はい、先生!ありがとうございます。まずは splice の引数の順番を間違えないようにノートにメモしておきます!」

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう