構文
配列に対して一つ一つの要素に対して匿名関数やコールバック関数を実行します。
1 2 3 |
配列.forEach(function(配列の要素){ 配列の要素を使用して処理; }); |
用途
- 基本的には配列の中の値に対して一つ一つ特定の関数を実行したい際に使います。
ポイント
- forEachの中で配列の要素を上書きしたり破壊的メソッドを使用する事で元の配列を上書きする事が可能です。
mapとの違い
- forEachは元の配列を操作するのに対して、mapは新しい配列を作ります。
例
例1:文字列の配列を読み出す。
1 2 3 4 |
let animals = ['犬','猫','ライオン'] animals.forEach(function(animal){ console.log(animal); //犬 猫 ライオン }); |
例2:数値の合計を計算する。
1 2 3 4 5 6 |
let nums = [1,2,3]; let sum = 0; nums.forEach(function(num){ sum += num; }); sum; //6 |
forEachに名前付き関数を渡す
なお、forEachに渡す関数は引数や引数のかっこ()を渡す必要はありません。
1 2 3 4 5 6 7 8 9 |
let nums = [1,2,3]; let sum = 0; function calcSum(num){ sum += num; } nums.forEach(calcSum); sum; //6 |
例3:複雑なオブジェクトの配列の操作:filterと組み合わせる
1 2 3 4 5 6 7 8 9 10 11 |
let cats = [ {id:'あ',dirs:[{ name:'太郎',kind:'三毛猫' },{ name:'太郎2',kind:'三毛猫' }]}, {id:'い',dirs:[{ name:'花子',kind:'三毛猫' },{ name:'花子2',kind:'ペルシャ猫' }]}, {id:'う',dirs:[{ name:'花子',kind:'三毛猫' },{ name:'花子3',kind:'ペルシャ猫' }]} ] cats.forEach(function(cat){ cat.dirs = cat.dirs.filter(function(dir){ return dir.kind === '三毛猫'; }); }); cats; |
この記事へのコメントはありません。