概要:このチュートリアルでは、JavaScript 配列のforEach()
メソッドを使用して、配列内のすべての要素に対して関数を実行する方法を学びます。
JavaScript 配列 forEach() メソッドの概要
通常、関数を配列のすべての要素に対して実行したい場合は、forループステートメントを使用します。
例えば、次のコードは配列のすべての要素をコンソールに出力します。
let ranks = ['A', 'B', 'C'];
for (let i = 0; i < ranks.length; i++) {
console.log(ranks[i]);
}
Code language: JavaScript (javascript)
出力
A
B
C
JavaScript 配列は、すべての要素に対して関数を実行できるforEach()
メソッドを提供します。
次のコードは、上記のコードと同等のforEach()
メソッドを使用しています。
let ranks = ['A', 'B', 'C'];
ranks.forEach(function (e) {
console.log(e);
});
Code language: JavaScript (javascript)
出力
A
B
C
forEach()
メソッドは、配列内の要素を反復処理し、要素ごとに一度、事前に定義された関数を実行します。
以下は、forEach()
メソッドの構文を示しています。
Array.forEach(callback [, thisArg]);
Code language: CSS (css)
forEach()
メソッドは2つの引数を取ります。
1) callback
forEach()
メソッドがすべての要素に対して実行するために使用するcallback
関数。
callback は次の引数を受け入れます。
currentElement
:処理中の現在の配列要素。index
:配列内のcurrentElement
のインデックス。array
:forEach()
メソッドを呼び出す配列。
index
とarray
はオプションです。
2) thisArg
thisArg
は、コールバックを実行する際に this として使用する値です。
forEach()
関数はundefined
を返すため、filter(),
map(),
some(),
every(),
およびsort()
のような他の反復メソッドのようにチェーンすることはできません。
forEach()
メソッドのfor
ループと比較した1つの制限は、ループを制御するためにbreakまたはcontinueステートメントを使用できないことです。
forEach()
メソッドでループを終了するには、callback
関数内で例外をスローする必要があります。
JavaScript 配列 forEach() メソッドのその他の例
contextObject
を使用するforEach()
メソッドの例を見てみましょう。
以下は、Counter
コンストラクター関数を示しています。
function Counter() {
this.count = 0;
let self = this;
return {
increase: function () {
self.count++;
},
current: function () {
return self.count;
},
reset: function () {
self.count = 0;
}
}
}
Code language: PHP (php)
この例は、カウンターオブジェクトをforEach()
メソッドに渡す方法を示しています。
var counter = new Counter();
var numbers = [1, 2, 3];
var sum = 0;
numbers.forEach(function (e) {
sum += e;
this.increase();
}, counter);
console.log(sum); // 6
console.log(counter.current()); // 3
Code language: JavaScript (javascript)
仕組み
- まず、新しい
Counter
オブジェクトを作成します。 - 次に、3つの数値の配列を定義します。
- 次に、変数
sum
を宣言し、ゼロの値を代入します。 - その後、
numbers
配列でforEach()
メソッドを呼び出します。コールバック関数で、要素をsum
変数に追加し、counter
オブジェクトのincrease()
メソッドを呼び出します。counter
オブジェクトは、コールバック関数内でthis
として参照されることに注意してください。 - 最後に、Webコンソールでsumの値とカウンターの現在の値をログに記録します。
このチュートリアルでは、JavaScript 配列のforEach()
メソッドを使用して、配列のすべての要素に対してコールバックを実行する方法を学びました。