Let's say you have an array of numbers:

const numbers = [2, 4, 6];

How can you sum these numbers? Thanks to the `array.reduce()`

method of JavaScript, you can easily do that:

const numbers = [2, 4, 6];const sum = numbers.reduce(function(sum, number) { const updatedSum = sum + number; return updatedSum;}, 0);sum; // 12

In this post, you'll learn about the reduce operation, and how to use `array.reduce(callback, initialValue)`

method to perform the reduce operation on arrays.

## 1. Reduce operation

Before diving into how to use the `array.reduce()`

method, let's find distinguish what problem it tries to solve: reducing an array to a value.

Reducing an array meaning performing a concrete accumulative operation on its items to calculate a result value.

A good example of reduce operation is calculating the sum of an array, where the accumulative operation is the addition of items. For an array `[2, 4, 6]`

reducing to a sum results in `12`

.

Another example of reducing is determining the maximum element of the array. For an array `[7, 2, 10, 6]`

the reducing to max item results in `10`

.

Now you can easily see what` array.reduce()`

method does — perform a reduce operation.

## 2. array.reduce() method

The `array.reduce()`

is a method on array that accepts 2 arguments:

const value = array.reduce(callback[, initialValue]);

The `callback`

is an obligatory argument that is a function performing the reduce operation, and the second optional argument is the initial value.

JavaScript invokes the `callback`

function upon each item of the array with 4 arguments: the accumulator value, the current array item, the current array item index, and the array itself. The `callback`

function must return the updated accumulator value.

array.reduce(function(accumulator, item, index, array) { // Use `accumulator` and `item` // to calculate `updatedAccumulator`... return updatedAccumulator;})

For example, let's get back to the code from the introduction:

const numbers = [2, 4, 6];const sum = numbers.reduce(function summarize(sum, number) { const updatedSum = sum + number; return updatedSum;}, 0);sum; // 12

`numbers.reduce(summarize, 0)`

calculates the sum of all elements in the array.

The `summarize`

callback is invoked for every item in the array with the accumulated sum and the iterated number. `summarize`

callback adds the iterated item to the already accumulated sum, and returns that updated sum.

That's how an array is reducing to a sum.

Also, note the second argument of `numbers.reduce(summarize, 0)`

— the sum of array items is initialized with `0`

.

*Side challenge: how would you use array.reduce() method to find the maximum value of the array? Write your solution in a comment below!*

## 3. Omitting initial value argument

You can also omit the second argument of the `array.reduce()`

. In such a case the reduce method initializes the accumulator value with the first item of the array, and the iteration starts from the second item.

For example, let's sum the array items without indicating the second argument of `number.reduce(summarize)`

:

const numbers = [2, 4, 6];const sum = numbers.reduce(function summarize(sum, number, index) { console.log(index); // logs 1, 2 return sum + number;});sum; // 12

The initial value argument is omitted, thus the accumulator is initialized with the value of the first item (the number `2`

). The iteration starts from the second item.

## 4. Conclusion

`array.reduce()`

is a useful method that reduces an array to a value.

`array.reduce(callback, initialValue)`

accepts 2 arguments: the `callback`

function that updates the accumulator value, and the initial value of the accumulator. `array.reduce()`

then invokes the `callback`

for each item of the array, updating the accumulator at each step.

You can also omit the initial value argument, in which case the accumulator value is initialized with the first item of the array, and the iteration starts from the second item.

Would you like to read more about array methods? Follow my post on How to Use forEach() to Iterate an Array.