JavaScript ・ 配列・オブジェクト
forEach()
配列の要素ごとに処理する
配列の要素1つずつに対して、渡した関数を順番に実行します。要素と一緒に番号(インデックス)も受け取れます。
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
実行結果
ブラウザでの表示
コンソール
- 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});
注意点
- 01forEach() は途中で止められません(break は使えない)。途中で止めたいときは for...of を使います。
- 02forEach() の中で await しても、順番に待ってはくれません。