【JavaScript ECMAScript】Iterator::Iterator.prototype.reduceインスタンスメソッドの使い方
Iterator.prototype.reduce()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Iterator.prototype.reduce()メソッドは、イテレータの全ての要素を順次処理し、その結果を単一の値に集約するメソッドです。このメソッドは、提供された「リデューサー」と呼ばれるコールバック関数を、イテレータ内の各要素に対して繰り返し実行します。コールバック関数は、これまでの処理結果である「累積値(accumulator)」と、現在処理中の「要素(currentValue)」の2つの主要な引数を受け取り、次の累積値を返します。この一連の処理をイテレータの全要素に対して行うことで、最終的に一つの集約された値が生成されます。
reduce()メソッドは、処理を開始する際の累積値として、オプションで「初期値(initialValue)」を指定できます。初期値が指定された場合、reduce()はその値から処理を開始します。もし初期値が指定されない場合は、イテレータの最初の要素が自動的に累積値の初期値として使用され、コールバック関数はイテレータの2番目の要素から実行されます。ただし、初期値が指定されず、かつ対象のイテレータが空である場合には、TypeErrorが発生することに注意が必要です。このメソッドは、数値の合計値や平均値の算出、リストからのオブジェクト構築など、イテレータの要素を集約する様々な場面で非常に強力なツールとして利用され、複雑な集計処理を簡潔に記述できるため、データの加工や分析において有用です。
構文(syntax)
1const numbersIterator = [1, 2, 3, 4].values(); 2const sum = numbersIterator.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
引数(parameters)
callbackFn, initialValue
- callbackFn: function: 各要素に対して実行されるコールバック関数。以下の3つの引数を取ります: accumulator, currentValue, index, array
- initialValue: any: コールバック関数の最初の呼び出しで accumulator として使用される初期値
戻り値(return)
any
このメソッドは、イテレータの各要素に対して指定されたコールバック関数を実行し、その結果を累積した値を返します。