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

JavaScriptの配列メソッドforEachとmapの使い方完全ガイド!初心者でもわかるコールバック関数入門

JavaScriptの配列メソッド(forEach, map)とコールバック関数の使い方
JavaScriptの配列メソッド(forEach, map)とコールバック関数の使い方

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

生徒

「先生、JavaScriptで配列の中身を順番に処理する方法ってありますか?」

先生

「ありますよ。配列にはforEachmapといった便利なメソッドがあって、それぞれにコールバック関数を渡すことで中身を順番に処理できます。」

生徒

「コールバック関数って何ですか?聞いたことはありますが、よくわかりません。」

先生

「コールバック関数とは、別の関数に引数として渡す関数のことです。処理が必要になったときに呼ばれる関数ですね。配列のメソッドでは、配列の各要素に対してこの関数を呼び出して処理を行います。」

生徒

「なるほど。じゃあ具体的にどうやって書くんですか?」

先生

「では、順を追って説明していきます。」

1. 配列メソッドforEachの基本

1. 配列メソッドforEachの基本
1. 配列メソッドforEachの基本

JavaScriptのforEachメソッドは、配列の全ての要素に対して順番に処理を実行するメソッドです。返り値はなく、単純に処理を繰り返したい場合に便利です。


const fruits = ["りんご", "バナナ", "オレンジ"];

fruits.forEach(function(fruit) {
  console.log(fruit);
});

りんご
バナナ
オレンジ

上の例では、配列fruitsの要素を1つずつfruitに代入して、consoleに出力しています。

2. forEachでインデックスも使う

2. forEachでインデックスも使う
2. forEachでインデックスも使う

forEachでは、要素だけでなくインデックス(配列の番号)も取得できます。


const fruits = ["りんご", "バナナ", "オレンジ"];

fruits.forEach(function(fruit, index) {
  console.log(index + "番目は" + fruit + "です");
});

0番目はりんごです
1番目はバナナです
2番目はオレンジです

これにより、配列の位置情報も一緒に扱うことができます。

3. 配列メソッドmapの基本

3. 配列メソッドmapの基本
3. 配列メソッドmapの基本

JavaScriptのmapメソッドは、配列の各要素に対して処理を行い、新しい配列を作成するメソッドです。元の配列は変更されません。


const numbers = [1, 2, 3];

const doubled = numbers.map(function(num) {
  return num * 2;
});

console.log(doubled);

[2, 4, 6]

この例では、元の配列numbersの各要素を2倍して、新しい配列doubledを作っています。

4. mapで文字列を変換する

4. mapで文字列を変換する
4. mapで文字列を変換する

mapは数値だけでなく文字列やオブジェクトの変換にも使えます。


const names = ["太郎", "花子", "次郎"];

const greetings = names.map(function(name) {
  return "こんにちは、" + name + "さん";
});

console.log(greetings);

["こんにちは、太郎さん", "こんにちは、花子さん", "こんにちは、次郎さん"]

各要素を文字列として加工して、新しい配列を作成しています。

5. forEachとmapの違い

5. forEachとmapの違い
5. forEachとmapの違い

簡単にまとめると:

  • forEach:配列の要素を順番に処理するだけ。返り値はundefined
  • map:配列の要素を変換して新しい配列を作る。返り値は変換後の配列

処理の内容によって使い分けることが大切です。

6. コールバック関数をアロー関数で書く

6. コールバック関数をアロー関数で書く
6. コールバック関数をアロー関数で書く

コールバック関数はアロー関数を使うとさらに簡単に書けます。


const numbers = [1, 2, 3];

numbers.forEach(num => console.log(num));

const doubled = numbers.map(num => num * 2);
console.log(doubled);

1
2
3
[2, 4, 6]

アロー関数はfunctionキーワードを省略でき、コードがスッキリします。

7. コールバック関数を使うと何が便利?

7. コールバック関数を使うと何が便利?
7. コールバック関数を使うと何が便利?

配列メソッドにコールバック関数を渡すと、同じ処理を繰り返し書く必要がなくなります。例えば、配列の全ての要素を2倍にしたい場合、for文で書くと長くなりますが、mapなら1行で処理できます。


const numbers = [1, 2, 3, 4, 5];

const squared = numbers.map(num => num * num);
console.log(squared);

[1, 4, 9, 16, 25]

このように処理を簡潔に書けるのがコールバック関数の大きな利点です。

8. 実用例:配列のオブジェクトを変換する

8. 実用例:配列のオブジェクトを変換する
8. 実用例:配列のオブジェクトを変換する

実際には、オブジェクトの配列を変換する場合にもmapが便利です。


const users = [
  {name: "太郎", age: 20},
  {name: "花子", age: 22},
  {name: "次郎", age: 18}
];

const names = users.map(user => user.name);
console.log(names);

["太郎", "花子", "次郎"]

オブジェクトの配列から特定のプロパティだけを抽出する場合にも、mapが非常に便利です。

まとめ

まとめ
まとめ

ここまでで、JavaScriptの配列メソッドforEachmapについて詳しく学びました。forEachは配列の各要素に対して順番に処理を行うメソッドで、返り値はなく単純に処理を繰り返す場合に最適です。一方、mapは各要素を変換して新しい配列を作成できるため、データの加工や抽出に非常に便利です。例えば、数値を2倍にしたり、文字列を加工したり、オブジェクト配列から特定のプロパティだけを抽出する場合など、実務でも頻繁に使用されます。

また、コールバック関数を利用することで、処理を関数化し繰り返し使うことが可能になり、コードの可読性や保守性が向上します。さらに、アロー関数を使えばコードが短くなり、より直感的に処理の流れを理解できます。配列のインデックスを取得したい場合もforEachで簡単に扱え、配列の位置情報と要素の両方を効率的に処理することができます。

配列メソッドは単純な処理だけでなく、オブジェクトや文字列の変換、条件による抽出、複雑な計算など幅広く応用可能です。for文で書くよりもシンプルに、そして可読性を保ちながら実装できるため、初心者から上級者まで使いこなす価値があります。今回の学習を通して、配列の処理に対する理解が深まり、JavaScriptでのコーディング効率を大幅に向上させることができます。

ここでまとめたポイントを簡単に整理すると次の通りです:

  • forEachは返り値を必要とせず、配列の要素を順に処理する場合に使用
  • mapは配列を変換して新しい配列を生成するため、加工や抽出に最適
  • コールバック関数を活用することで、処理を関数として再利用可能
  • アロー関数を使えばコードを短く、シンプルに書ける
  • インデックス情報も扱えるため、配列の順序や位置に依存した処理が簡単
  • オブジェクト配列から特定のプロパティだけを抽出するなど、実務での応用範囲が広い

これらを組み合わせることで、配列操作の幅が広がり、より柔軟で効率的なコードが書けるようになります。特に実務では、データの加工や集計、条件に応じた抽出など、多様な場面でforEachmapは不可欠なスキルです。

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

生徒

「先生、forEachとmapの違いがだんだん分かってきました。でも、どちらを使うか迷うこともあります。」

先生

「そうですね。基本は、返り値が必要かどうかで判断します。処理だけでいいならforEach、新しい配列を作りたい場合はmapです。」

生徒

「なるほど。あと、アロー関数を使うと本当にコードが短くて読みやすくなりますね。」

先生

「その通りです。特に短い処理ならアロー関数を使うと直感的に書けます。また、オブジェクト配列を扱うときもmapを使えば簡単に特定のプロパティを抽出できます。」

生徒

「それで、例えばユーザーリストから名前だけを取り出す場合はmapを使うといいんですね。」

先生

「そうです。例えば次のように書けます。」


const users = [
  {name: "太郎", age: 20},
  {name: "花子", age: 22},
  {name: "次郎", age: 18}
];

const names = users.map(user => user.name);
console.log(names);

["太郎", "花子", "次郎"]

生徒

「本当に簡単ですね!これならデータの変換や抽出がすぐできます。」

先生

「その通り。今回学んだことを応用すれば、複雑な配列処理も効率的に書けます。forEachとmapを使い分けることで、読みやすく保守性の高いコードを書けるようになりますよ。」

生徒

「分かりました。配列メソッドの使い方をマスターして、色々なデータ処理に挑戦してみます!」

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのスコープとは?ローカル変数・グローバル変数の違いと使い分け
New2
TypeScript
TypeScriptで型の合成時に発生する型エラーの対処法を徹底解説!初心者にもわかりやすく解説
New3
TypeScript
TypeScriptでAPI呼び出しをラップするユーティリティ関数の設計完全ガイド!初心者向けにAxiosやFetchの使い方を解説
New4
TypeScript
TypeScriptのMapped Typesとインターフェースの連携方法を徹底解説!初心者でも理解できる型変換の基本
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのループで無限ループが起きる原因と対策を初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptの文字列の長さを取得する(lengthプロパティ)
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのファイル分割とimport/exportの基本を徹底解説!初心者でも安心のやさしい入門
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptでクエリパラメータを取得する方法を完全解説 URLSearchParamsの使い方を初心者向けに丁寧に説明
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのプリミティブ型と参照型の違いを初心者向けに解説