JavaScript ・ 配列・オブジェクト

forEach()

配列の要素ごとに処理する

配列の要素1つずつに対して、渡した関数を順番に実行します。要素と一緒に番号(インデックス)も受け取れます。

種類
配列のメソッド
戻り値
undefined
引数
要素・番号・配列
01

サンプルコード

HTML
1<ol id="steps"></ol>
JS
1const steps = ['豆を挽く', 'お湯を注ぐ', '蒸らす'];
2const ol = document.querySelector('#steps');
3
4steps.forEach((step, i) => {
5 const li = document.createElement('li');
6 li.textContent = step;
7 ol.append(li);
8 console.log(i, step);
9});
02

実行結果

ブラウザでの表示
コンソール
  1. console.log() の出力がここに表示されます
03

解説

配列.forEach(関数) は、配列の要素の数だけ関数を呼び出します。関数は1つ目の引数で要素を、2つ目の引数で番号を受け取れます。

上の例では、配列の手順を1つずつリスト項目にして画面に追加し、番号と内容をコンソールにも出力しています。

forEach() は何も返しません。新しい配列を作りたいときは map()、絞り込みたいときは filter() を使います。

04

応用例・注意点

関数が受け取る引数

引数説明
1つ目要素
2つ目番号(インデックス)
3つ目配列そのもの

複数の要素にまとめてイベントを付ける

querySelectorAll() の結果にも forEach() が使えます。

HTML
1<button type="button" class="btn">A</button>
2<button type="button" class="btn">B</button>
JS
1document.querySelectorAll('.btn').forEach((btn) => {
2 btn.addEventListener('click', () => {
3 console.log(btn.textContent + ' が押されました');
4 });
5});

注意点

  1. 01forEach() は途中で止められません(break は使えない)。途中で止めたいときは for...of を使います。
  2. 02forEach() の中で await しても、順番に待ってはくれません。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉