このページでは、JavaScriptでよく使われるループ処理の「forEach文」について解説しています。
「どんなときに使えるのか」「どうやって書けばいいのか」といった疑問に分かりやすく答えていますので参考にしてみてください。
ノーノちゃん
ぶたさん
このページの目次
1. JavaScriptのforEach文とは?
まずはじめにJavaScriptのforEach文について解説します。
基本情報
メソッド名 | forEach文 |
---|---|
登場時期 | ES6(2015年) |
使える対象 | 配列 |
使える制御構文 | break :✕continue :✕return :◯ |
主な役割 | 配列の要素をひとつずつ順番に取り出して処理 |
基本文法 | 配列名.forEach(function(value, index, array) |
配列を順番に処理するもの
forEach文は、配列の要素をひとつずつ順番に処理するためのメソッドです。
具体的には下記のいずれかの要素を取り出すことができます。
各要素 | 意味 |
---|---|
value |
配列の中の値 |
index |
配列の順番 (0から始まる) |
array |
配列全体 |
ぶたさん
const bento = ["ごはん", "唐揚げ", "卵焼き"];
bento.forEach(function(sidedish) {
console.log(sidedish);
});
ごはん
唐揚げ
卵焼き
2. forEach文の書き方(基礎)
ここではforEach文の基本的な書き方をご紹介しています。
forEach 文の書き方はほとんど同じですので、一度覚えてしまえばさまざまな場面で使い回すことができます。
基本形

const 配列名 = ["値1", "値2", "値3", "値4"];
配列名.forEach(function(value, index, array) {
// 処理内容
});
部分 | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
「変更できない変数(箱)を作る」という宣言 |
配列名 |
配列の名前 | 配列の名前 |
値 |
要素 | 配列の中身(文字列、数値など) |
.forEach |
メソッド | 配列を1つずつ取り出して順番に処理する |
(function()) |
コールバック 関数 |
値を使って何をするかを書く関数 |
value |
第1引数 | 値 (配列の中にある要素) |
index |
第2引数 | 順番 (配列の左から数えて何番目か) |
array |
第3引数 | 配列全体 (配列そのもの) |
処理内容 |
ー | 配列から取り出したものをどう処理したいか書く場所 |
value
, index
, array
)はあくまで名前ですので、自由に変えても問題ありません。
ただし、引数の順番(第1、第2、第3)は決まっていますので注意してください。
ノーノちゃん
function(value)
のように引数を1つ書くだけでOKです。ぶたさん
valueを取得

value
(値)」を取り出す方法です。const fruitsbasket = ["りんご", "バナナ", "オレンジ"];
fruitsbasket .forEach(function(fruits) {
console.log(fruits);
});
りんご
バナナ
オレンジ
const fruitsbasket = ["りんご", "バナナ", "オレンジ"];
「fruitsbasket」という名前の変数を作り、配列[]の中に「りんご」「バナナ」「オレンジ」という値を入れる。fruitsbasket.forEach(function(fruits)
変数「fruitsbasket」の中から1つずつ値を取り出して、「fruits」という変数に入れる繰り返しを始める。console.log(fruits)
変数「fruit」の中身をコンソール画面に表示する。
【配列のコード】
const fruitsbasket = ["りんご", "バナナ", "オレンジ"];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
fruitsbasket |
配列名 | 各果物が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
"りんご" "バナナ" "オレンジ" |
要素 | 箱の中身 |
"" |
囲い記号 | 囲まれたものを文字列として扱う |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【forEach文のコード】
fruitsbasket.forEach(function(fruits) {
console.log(fruits);
});
コード | 種別 | 意味 |
---|---|---|
fruitsbasket |
配列名 | 各果物が入っている箱 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
forEach |
メソッド | 配列の要素を1つずつ取り出して処理する命令 |
function() |
コールバック 関数 |
取り出した値を使って処理を行う関数 |
fruits |
引数 (変数名) |
forEach で取り出された各果物 |
{} |
ブロック スコープ |
{} 内にくり返したい処理を書く |
console.log() |
出力命令 | () の中身をコンソールに表示 |
value / indexを取得

value
/index
(値/順番)」を取り出す方法です。const fruitsbasket = ['りんご', 'バナナ', 'オレンジ'];
fruitsbasket.forEach(function(fruits, index) {
console.log(`${index}番目のフルーツは${fruit}です`);
});
0番目のフルーツはりんごです
1番目のフルーツはバナナです
2番目のフルーツはオレンジです
const fruitsbasket = ['りんご', 'バナナ', 'オレンジ'];
「fruitsbasket」という名前の変数を作り、配列[]の中に「りんご」「バナナ」「オレンジ」という値を入れる。fruitsbasket.forEach(function(fruits, index)
「fruitsbasket」の中にあるフルーツの名前を1つずつ取り出して、取り出したフルーツを「fruits」、その順番(0番目、1番目)を「index」という変数に入れる繰り返し処理を始める。console.log(`${index}番目のフルーツは${fruits}です`);
取り出したユーザー名「user」とユーザの年齢「age」を、文字と一緒にコンソール画面に表示する。
【配列のコード】
const fruitsbasket = ['りんご', 'バナナ', 'オレンジ'];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
fruitsbasket |
配列名 | 各果物が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
"りんご" "バナナ" "オレンジ" |
要素 | 箱の中身 |
"" |
囲い記号 | 囲まれたものを文字列として扱う |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【forEachf文のコード】
fruitsbasket.forEach(function(fruits, index) {
console.log(`${index}番目のフルーツは${fruit}です`);
});
コード | 種別 | 意味 |
---|---|---|
fruitsbasket |
配列名 | 各果物が入っている箱 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
forEach |
メソッド | 配列の要素を1つずつ取り出して処理する命令 |
function() |
コールバック 関数 |
取り出した値を使って処理を行う関数 |
fruits |
引数 (変数名) |
forEach で取り出された各果物 |
index |
引数 (番号) |
forEach で取り出された何番目の要素かを示す番号 |
console.log() |
出力命令 | () の中身をコンソールに表示 |
${} |
プレース ホルダ |
{} 内で指定した変数の中身を入れる |
value / index / arrayを取得

value
/index
/array
(値/順番/配列全体)」を取り出す方法です。const fruitsbasket = ["りんご", "バナナ", "オレンジ"];
fruitsbasket.forEach(function(fruits, index, array) {
console.log("-----------");
console.log(`▶ 値(value): ${fruits}`);
console.log(`▶ 順番(index): ${index}`);
console.log(`▶ 配列全体(array): ${array}`);
});
-----------
▶ 値(value): りんご
▶ 順番(index): 0
▶ 配列全体(array): りんご,バナナ,オレンジ
-----------
▶ 値(value): バナナ
▶ 順番(index): 1
▶ 配列全体(array): りんご,バナナ,オレンジ
-----------
▶ 値(value): オレンジ
▶ 順番(index): 2
▶ 配列全体(array): りんご,バナナ,オレンジ
const fruitsbasket = ['りんご', 'バナナ', 'オレンジ'];
「fruitsbasket」という名前の変数を作り、配列[]の中に「りんご」「バナナ」「オレンジ」という値を入れる。fruitsbasket.forEach(function(fruits, index, array)
「fruitsbasket」の中にあるフルーツの名前を1つずつ取り出して、取り出したフルーツを「fruits」という変数に入れ、順番(0番目、1番目)を「index」という変数に入れる。そして「array」に配列全体を入れる繰り返し処理を始める。console.log();
変数「fruits」「index」「array」を文字と一緒にコンソール画面に表示する。
【配列のコード】
const fruitsbasket = ['りんご', 'バナナ', 'オレンジ'];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
fruitsbasket |
配列名 | 各果物が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
"りんご" "バナナ" "オレンジ" |
要素 | 箱の中身 |
"" |
囲い記号 | 囲まれたものを文字列として扱う |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【forEachf文のコード】
fruitsbasket.forEach(function(fruits, index, array) {
console.log("-----------");
console.log(`▶ 値(value): ${fruits}`);
console.log(`▶ 順番(index): ${index}`);
console.log(`▶ 配列全体(array): ${array}`);
});
コード | 種別 | 意味 |
---|---|---|
fruitsbasket |
配列名 | 各果物が入っている箱 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
forEach |
メソッド | 配列の要素を1つずつ取り出して処理する命令 |
function() |
コールバック 関数 |
取り出した値を使って処理を行う関数 |
fruits |
引数 (変数名) |
forEach で取り出された各果物 |
index |
引数 (順番) |
forEach で取り出された何番目の要素かを示す番号 |
array |
引数 (配列全体) |
forEach で取り出された配列全体 |
console.log() |
出力命令 | () の中身をコンソールに表示 |
${} |
プレース ホルダ |
{} 内で指定した変数の中身を入れる |
3. forEach文の書き方(応用)
ここではforEach文の応用的な書き方をご紹介しています。
オブジェクトの配列を処理したりする方法を載せていますので参考にしてみてください。
アロー関数で書く

function()
」を使わず「=>(アロー関数)
」で書く方法です。従来のfunction()で書いた場合
const fruitsbasket = ["りんご", "バナナ", "オレンジ"];
fruitsbasket .forEach(function(fruits) {
console.log(fruits);
});
アロー関数で書いた場合
const fruitsbasket = ["りんご", "バナナ", "オレンジ"];
fruitsbasket.forEach(fruits => {
console.log(fruits);
});
ノーノちゃん
function(fruits)
がfruits =>
に変わっています。ぶたさん
ノーノちゃん
function()
と比べて、関数を使っていることが分かりにくいね。ぶたさん
値の合計を計算

value(値)
を取り出し、合計を計算する方法です。const scores = [80, 90, 75, 60];
let total = 0;
scores.forEach(function(score) {
total += score;
});
console.log(`合計点は${total}点です`);
合計点は305点です
const scores = [80, 90, 75, 60];
「scores(スコア)」という名前の変数を作り、配列[]の中に点数(80, 90, 75, 60)を入れる。let total = 0;
「total(合計点)」という変数を作り、最初は「0」にしておく。scores.forEach(function(score) {total += score;});
「scores」の中にある点数を1つずつ取り出して、「score」という変数に入れる繰り返しを始め、取り出した点数を「total」に足していく。console.log(`合計点は${total}点です`);
変数「total」の中身をコンソール画面に表示する。
【配列のコード】
const scores = [80, 90, 75, 60];
let total = 0;
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
scores |
配列名 | 点数が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
80 90 75 60 |
要素 | 箱の中身 |
let |
変数宣言 キーワード |
変更できる変数(箱)を作る宣言 |
total |
変数名 | 変更できない変数(箱)を作る宣言 |
0 |
変数値 | 箱(total)の中に入れるもの |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【forEachf文のコード】
scores.forEach(function(score) {
total += score;
});
console.log(`合計点は${total}点です`);
コード | 種別 | 意味 |
---|---|---|
scores |
配列名 | 点数が入った箱 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
forEach |
メソッド | 配列の要素を1つずつ取り出して処理する命令 |
function(score) |
コールバック 関数 |
取り出した値(score)を使って処理を行う関数 |
{} |
ブロック スコープ |
{} 内にくり返したい処理を書く |
total |
変数名 | 合計点が入っている変数の名前 |
+= |
加算代入 演算子 |
右の値を左に足して、その結果を左に入れる |
score |
引数 (変数名) |
forEach で取り出された各点数 |
console.log() |
出力命令 | () の中身をコンソールに表示 |
オブジェクトの配列を取得

const users = [
{ name: "太郎", age: 25 },
{ name: "花子", age: 30 },
{ name: "次郎", age: 20 }
];
users.forEach(function(user) {
console.log(`${user.name}さんは${user.age}歳です`);
});
太郎さんは25歳です
花子さんは30歳です
次郎さんは20歳です
const users = [];
「users」という名前の変数を作り、その中に3人分の情報(名前と年齢)をオブジェクト形式で入れた配列を作る。users.forEach(function(user)
「users」配列の中から1人ずつ取り出して、その情報を「user」という名前の変数に入れて、繰り返し処理を始める。console.log(`${user.name}さんは${user.age}歳です`);
取り出した「user」オブジェクトの中の「name」と「age」の値をコンソール画面に表示する。
【配列のコード】
const users = [
{ name: "太郎", age: 25 },
{ name: "花子", age: 30 },
{ name: "次郎", age: 20 }
];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
{} |
オブジェクト | 引き出し付きの箱 (複数のデータを1つにまとめたもの) |
name: "太郎" name: "花子" name: "次郎" |
プロパティ | 引き出しの名前(ラベル) |
age: 25 age: 30 age: 20 |
プロパティ | 引き出しの名前(ラベル) |
name |
キー | 引き出し |
age |
キー | 引き出し |
太郎 花子 次郎 |
値 | 引き出しの中のデータ |
25 30 20 |
値 | 引き出しの中のデータ |
"" |
囲い記号 | 囲まれたものを文字列として扱う |
, |
カンマ演算子 | 左から順に実行して最後だけ使う |
; |
区切り記号 | 文末につける記号 |
【forEachf文のコード】
users.forEach(function(user) {
console.log(`${user.name}さんは${user.age}歳です`);
});
コード | 種別 | 意味 |
---|---|---|
users |
配列名 | ユーザーの情報が入った配列 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
forEach |
メソッド | 配列の要素を1つずつ取り出して処理する命令 |
function() |
コールバック 関数 |
取り出した値を使って処理を行う関数 |
user |
引数 (変数名) |
forEach で取り出されたユーザーの情報 |
console.log() |
出力命令 | () の中身をコンソールに表示 |
user.name |
プロパティ | user の中のname の値 |
user.age |
プロパティ | user の中のage の値 |
`` |
テンプレート リテラル記号 |
文字列の始まりと終わりを示す |
${} |
プレース ホルダ |
{} 内で指定した変数の中身を入れる |
DOM操作する方法

DOM操作は、JavaScriptでツリーにアクセスし、HTMLの要素の追加・削除・書き換えなどを行うことです。
DOM操作前後
果物リスト
果物リスト
りんご
みかん
バナナ
ぶたさん
DOM操作するためのコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>【forEach】DOM操作で要素を追加</title>
</head>
<body>
<h2>果物リスト</h2>
<!-- ここに果物の名前を入れたい -->
<div id="list"></div>
<script src="script.js"></script>
</body>
</html>
const fruits = ["りんご", "バナナ", "みかん"];
const list = document.getElementById("list");
fruits.forEach(function(fruit) {
const p = document.createElement("p");
p.textContent = fruit;
list.appendChild(p);
});
const fruits = ["りんご", "バナナ", "みかん"];
「fruits」という名前の変数を作り、3つの果物の文字列を配列として入れる。const list = document.getElementById("list");
HTMLの中にある、id="list" の要素を取得して、「list」という変数に入れる。fruits.forEach(function(fruit)
「fruits」の中の要素を1つずつ取り出して、「fruit」という変数に入れて処理を繰り返す。const p = document.createElement("p");
新しく段落「<p>」の要素を作る。p.textContent = fruit;
段落の中のテキストに、取り出した果物の名前を入れる。list.appendChild(p);
作った段落「<p>果物名</p>」を、HTMLのlist要素の中に追加する。
4. ループ処理を抜ける方法
forEach文では、break
やcontinue
を使えないため、ループを途中で終了したりスキップしたりすることができません。
そのため、ループ処理を止めたい場合は他の方法を使う必要があります。
returnで処理をスキップ

return
を使うとcontinue
と同じように処理をスキップすることができます。const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {
if (number === 3) {
return; // numberが3のときだけ処理をスキップ
}
console.log(number);
});
1
2
4
5
const numbers = [1, 2, 3, 4, 5];
「numbers」という名前の変数を作り、配列[]の中に数値(1, 2, 3, 4, 5)を入れる。numbers.forEach(function(number)
「numbers」の中から1つずつ数字を取り出して「number」という変数に入れながら繰り返す。if (number === 3) {return; // numberが3のときだけ処理をスキップ}
取り出した「number」が「3」のときは「return」でこの回の処理だけスキップして、次の数字へ進む。console.log(number);
変数「number」の中身をコンソール画面に表示する。
【配列のコード】
const numbers = [1, 2, 3, 4, 5];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
numbers |
配列名 | 番号が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
1 2 3 4 5 |
要素 | 箱の中身 |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【forEachf文のコード】
numbers.forEach(function(number) {
if (number === 3) {
return;
}
console.log(number);
});
コード | 種別 | 意味 |
---|---|---|
numbers |
配列名 | 番号が入った箱の名前 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
forEach |
メソッド | 配列の要素を1つずつ取り出して処理する命令 |
function() |
コールバック 関数 |
取り出した値を使って処理を行う関数 |
number |
引数 (変数名) |
forEach で取り出された番号 |
{} |
ブロック スコープ |
{} 内にくり返したい処理を書く |
if |
条件分岐 | もし〇〇なら処理を分ける |
number === 3 |
条件式 | number の中身が「3 」と等しいかどうか |
=== |
厳密等価 演算子 |
左右の値が「型も値も同じ」かどうか比較 |
return |
制御構文 | 関数内で処理した結果を結果を返す |
console.log() |
出力命令 | () の中身をコンソールに表示 |
someで代替して処理を中断

some
メソッドを使って処理を中断する方法です。some
は「条件に合うものが一つでもあるか」を調べるためのメソッドです。
具体的には次のようなことを行います。
- 配列の要素(値)を順番に1つずつチェック。
- 条件を満たす要素(値)が1つでも見つかると、すぐに「true」を返して処理を醜虜する
- もし条件を満たす要素が1つもなければ、最後まで処理して「false」を返す。
forEachで処理した場合(途中で止まらない)
const items = [1, 2, 3, 4, 5];
items.forEach(item => {
console.log(item);
if (item === 3) {
// ここで処理を止めたくても止まらない
return;
}
});
1
2
3
4
5
some
で代替します。ぶたさん
someで代替して処理を止める方法
const numbers = [1, 2, 3, 4, 5];
numbers.some(function(number) {
console.log(number);
if (number === 3) {
return true; // ここで処理を止めることができる
}
return false;
});
1
2
3
const numbers = [1, 2, 3, 4, 5];
「numbers」という名前の変数を作り、配列[]の中に数値(1, 2, 3, 4, 5)を入れる。numbers.some(function(number)
配列「numbers」の中の数字を1つずつ取り出し、「number」という変数に入れて繰り返しを始める。console.log(number);
変数「number」の中身をコンソール画面に表示する。if (number === 3) {}
もし、取り出した「number」が「3」のときは「true(はい)」を返して処理を中断する。return false;
もし、取り出した「number」が「3」以外のときは「false(いいえ)」を返して処理を続ける。
【配列のコード】
const numbers = [1, 2, 3, 4, 5];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
numbers |
配列名 | 番号が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
1 2 3 4 5 |
要素 | リストの中身 |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【some文のコード】
numbers.some(function(number) {
console.log(number);
if (number === 3) {
return true;
}
return false;
});
コード | 種別 | 意味 |
---|---|---|
numbers |
配列名 | 番号が入った箱 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
some |
メソッド | 条件に合う要素があればtrue を返し処理を終了 |
function() |
コールバック 関数 |
取り出した値を使って処理を行う関数 |
number |
引数 (変数名) |
取り出された番号 |
{} |
ブロック スコープ |
{} 内にくり返したい処理を書く |
console.log() |
出力命令 | () の中身をコンソールに表示 |
if |
条件分岐 | もし〇〇なら処理を分ける |
number === 3 |
条件式 | number の中身が「3 」と等しいかどうか |
=== |
厳密等価 演算子 |
左右の値が「型も値も同じ」かどうか比較 |
return |
制御構文 | 関数内で処理した結果を結果を返す |
true |
真偽値 | 「条件に合っているよ」というサイン |
false |
真偽値 | 「条件に合っていないよ」というサイン |
everyで代替して処理を中断

every
メソッドを使って処理を中断する方法です。every
は「すべての条件が合うものがあるか?」を調べるためのメソッドです。
具体的には次のようなことを行います。
- 配列の要素(値)を1つずつ順番にチェック。
- すべての要素(値)が条件を満たしていれば「true」を返す。
- 1つでも条件を満たさない要素(値)があれば、そこで処理をやめて「false」を返す。
forEachで処理した場合(途中で止まらない)
const items = [1, 2, 3, 4, 5];
items.forEach(item => {
console.log(item);
if (item === 3) {
// ここで処理を止めたくても止まらない
return;
}
});
1
2
3
4
5
every
で代替します。ぶたさん
everyで代替して処理を止める方法
const numbers = [1, 2, 3, 4, 5];
numbers.every(num => {
console.log(num);
return num !== 3; // 3ならfalseを返して処理を止める
});
1
2
3
const numbers = [1, 2, 3, 4, 5];
「numbers」という名前の変数を作り、配列[]の中に数値(1, 2, 3, 4, 5)を入れる。numbers.every(num =>
配列「numbers」の中の数字を1つずつ取り出し、「num」という変数に入れて繰り返しを始めます。console.log(num);
変数「num」の中身をコンソール画面に表示する。return num !== 3;
数字が「3」でなければ「true」返し処理を続ける。数字が「3」なら「false」を返して繰り返し処理を止めます。
【配列のコード】
const numbers = [1, 2, 3, 4, 5];
コード | 種別 | 意味 |
---|---|---|
const |
変数宣言 キーワード |
変更できない変数(箱)を作る宣言 |
numbers |
配列名 | 番号が入った箱の名前 |
= |
代入演算子 | 右のものを左に入れる |
[] |
配列 リテラル |
仕切り付きの箱 |
1 2 3 4 5 |
要素 | リストの中身 |
, |
カンマ演算子 | 左から順に実行して結果を返す |
; |
区切り記号 | 文末につける記号 |
【every文のコード】
numbers.every(num => {
console.log(num);
return num !== 3;
});
コード | 種別 | 意味 |
---|---|---|
numbers |
配列名 | 番号が入った配列 |
. |
ドット 演算子 |
「◯◯の中にある~」という意味の記号 |
every |
メソッド | 条件を満たさない要素があればfalse を返し処理を終了 |
num |
引数 (変数名) |
forEach で取り出された番号 |
=> |
アロー関数 | 関数をかんたんに書くための記号 |
{} |
ブロック スコープ |
{} 内にくり返したい処理を書く |
console.log() |
出力命令 | () の中身をコンソールに表示 |
return |
制御構文 | 関数内で処理した結果を結果を返す |
num !=== 3 |
条件式 | num の中身が「3 」と等しくなければtrue 、等しければfalse |
=== |
厳密等価 演算子 |
左右の値が「型も値も同じ」かどうか比較 |
return |
制御構文 | 関数内で処理した結果を結果を返す |
5. よくある質問
ここでは、forEach文やそれに関連するよくある質問をご紹介しています。
forEachでbreak使えない理由
forEach文は「配列をひとつずつ順番に処理していく」ことを前提に作られている特別なループです。
そのため「途中でやめる(break)」という考え方がそもそも組み込まれていません。
どうしても途中で処理を止めたい場合はsome
やevery
のメソッドを利用しましょう。
forEachは配列以外に使えない?
forEach文は基本的に配列専用のメソッドなので、基本的には配列以外には使うことはできません。
ただし、NodeList
,Set
,Map
など一部の配列のようなデータに対してはforEach文を使うことが可能です。
また、オブジェクトではそのままでは使えませんが、キーや値を取り出して配列に変換すれば、forEach文で処理することができます。
Object.keys()
で、オブジェクトのキーだけを配列に取り出すとforEach文を使うことができます。ぶたさん
const fruits = {
リンゴ: 3,
バナナ: 5,
オレンジ: 2
};
Object.keys(fruits).forEach(fruit => {
console.log(`${fruit}は${fruits[fruit]}個あります`);
});
リンゴは3個あります
バナナは5個あります
オレンジは2個あります
for...of文との違い
forEach文とfor...of文との違いは以下のようになります。
forEach | for...of | |
---|---|---|
種類 | メソッド | ループ構文 |
対象 | 配列のみ | 配列 文字列 Set Map |
使える制御構文 | return |
break continue return |
await | ❌使えない | ✅使える |
index取得 | ✅可能 | ✅可能 |

awaitが使えない?
結論から言うと、forEach文の中ではawait
は使えません。
await
は1つずつ順番を待ちながらゆっくりデータを処理しますが、forEach文は処理を待たずに進めるという特徴があります。
そのため、await
の効果が無視されてしまいます。
6. まとめ
forEach文は配列をひとつずつ順番に処理するためのメソッドです。
具体的には「value(値)」「index(順番)」「array(配列全体)」の3つの要素を処理することができます。
ただし、途中で処理を止めたり、値を集めて新しい配列を作ることは基本的にはできません。
配列の値の変換したいなどの場合は他のメソッドを使いましょう。
- 配列をひとつずつ順番に処理するためのもの
- 途中で止められない(breakやreturnは使えない)
- 新しい配列は作れない(mapやfilterとは違う)
- 元の配列を変更できない(ただし、内部で変更は可能)
- 配列のすべての要素を使って何かしたいときに使う