javascript エラー「TypeError: reduce of empty array with no initial value」の解決方法

javascript エラー「TypeError: reduce of empty array with no initial value」の解決方法

javascriptで、エラー「TypeError: reduce of empty array with no initial value」が発生した場合の原因と解決方法を記述してます。「reduce」に空の配列を指定した場合に発生します。

環境

  • OS macOS Monterey
  • ブラウザ safari 15.5

エラー内容

以下のコードで発生。

let arr = [0, 1, 2];

arr.filter(x => x > 2).reduce((x, y) => x + y);

エラーメッセージ

TypeError: reduce of empty array with no initial value

画像

原因

「filter」関数を実行時に、配列内に指定した条件の要素が存在しないため

解決方法

配列が空でない場合のみ、実行する

let arr = [0, 1, 2];

let result = arr.filter(x => x > 2);

if ( result.length ) {
  let sum = result.reduce( (x, y) => x + y);
  console.log(sum);
}

このコードの場合は、条件を変更すると「reduce」が実行され総和が求められます。

let arr = [0, 1, 2];
let result = arr.filter(x => x > 0);

if ( result.length ) {
  let sum = result.reduce( (x, y) => x + y);
  console.log(sum);
}

実行結果