# How to find the sum of an array of numbers

Given an array `[1, 2, 3, 4]`, how can I find the sum of its elements? (In this case, the sum would be `10`.)

I thought `\$.each` might be useful, but I’m not sure how to implement it.

## Recommended (reduce with default value)

Array.prototype.reduce can be used to iterate through the array, adding the current element value to the sum of the previous element values.

```console.log(
[1, 2, 3, 4].reduce((a, b) => a + b, 0)
)
console.log(
[].reduce((a, b) => a + b, 0)
)```

## Without default value

You get a TypeError

```console.log(
[].reduce((a, b) => a + b)
)```

## Prior to ES6’s arrow functions

```console.log(
[1,2,3].reduce(function(acc, val) { return acc + val; }, 0)
)

console.log(
[].reduce(function(acc, val) { return acc + val; }, 0)
)```

## Non-number inputs

If non-numbers are possible inputs, you may want to handle that?

```console.log(
["hi", 1, 2, "frog"].reduce((a, b) => a + b)
)

let numOr0 = n => isNaN(n) ? 0 : n

console.log(
["hi", 1, 2, "frog"].reduce((a, b) =>
numOr0(a) + numOr0(b))
)```

## Non-recommended dangerous eval use

We can use eval to execute a string representation of JavaScript code. Using the Array.prototype.join function to convert the array to a string, we change [1,2,3] into “1+2+3”, which evaluates to 6.

```console.log(
eval([1,2,3].join('+'))
)

//This way is dangerous if the array is built
// from user input as it may be exploited eg: