【JavaScript ECMAScript】TypeError: Reduce of empty array with no initial valueエラーの使い方
TypeError: Reduce of empty array with no initial valueエラーの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
TypeError: Reduce of empty array with no initial valueオブジェクトは、JavaScriptにおいて配列の要素を単一の値に集約するreduce()メソッドを使用する際に発生する、特定の状況を示すエラーを表すオブジェクトです。このエラーは、Array.prototype.reduce()またはArray.prototype.reduceRight()メソッドを、初期値(initialValue)を指定せずに空の配列に対して呼び出した場合に発生します。
reduce()メソッドは、配列のすべての要素を順番に処理し、最終的に一つの結果を生成するJavaScriptの組み込み関数です。この処理を開始するためには、最初の要素を処理する前の基準となる値、つまり「累積値の初期値」が必要です。配列が空であるにもかかわらず、この初期値が開発者によって提供されない場合、reduce()メソッドは処理を開始する基準を見つけることができません。この曖昧な状況を避けるため、JavaScriptエンジンはこのTypeErrorを発生させ、開発者に問題があることを通知します。
このエラーを回避し、プログラムを安定させるためには、以下のいずれかの対応が必要です。一つ目は、reduce()メソッドの第二引数として、累積処理の開始点となる初期値を必ず指定することです。二つ目は、reduce()メソッドを呼び出す前に、対象の配列が空でないことを確認することです。例えば、array.lengthプロパティを使って配列の要素数をチェックし、配列が空の場合にはreduce()を呼び出さずに、別途適切なデフォルト値を返すなどのロジックを実装します。初期値の指定は、空の配列に対しても安全にreduce()を適用するための最も一般的で推奨される解決策です。
構文(syntax)
1const emptyArray = []; 2const result = emptyArray.reduce((accumulator, currentValue) => accumulator + currentValue);
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません