Javascript Reduce an empty array-ThrowExceptions

Exception or error:

When I reduce the array, I am trying to get the number zero, but I dont clearly understand the behaviour of the function

[].reduce(function(previousValue, currentValue){
  return Number(previousValue) + Number(currentValue);


TypeError: Reduce of empty array with no initial value

seems that if the array is empty I can’t reduce it

[""].reduce(function(previousValue, currentValue){
  return Number(previousValue) + Number(currentValue);



If the only element in the array is an empty string, retrieves an empty string

How to solve:

The second parameter is for initial value.

[].reduce(function(previousValue, currentValue){
  return Number(previousValue) + Number(currentValue);
}, 0);

or using ES6:

[].reduce( (previousValue, currentValue) => previousValue + currentValue, 0);


Both behaviors are according to the spec.

You cannot reduce an empty array unless you explicitly provide an initial “accumulated” value as the second argument:

If no initialValue was provided, then previousValue will be equal to
the first value in the array and currentValue will be equal to the
second. It is a TypeError if the array contains no elements and
initialValue is not provided.

If the array has at least one element then providing an initial value is optional. However, if one is not provided then the first element of the array is used as the initial value and reduce continues to process the rest of the array elements by invoking your callback. In your case the array only contains a single element, so that element becomes the initial value and also final value, since there are no more elements to be processed through the callback.

Leave a Reply

Your email address will not be published. Required fields are marked *