HiveBrain v1.2.0
Get Started
← Back to all entries
snippetjavascriptCritical

How to find the sum of an array of numbers

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
arraynumbershowfindthesum

Problem

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.

Solution

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))
)




Speed Optimized

The reduce way is nice as it is easy to write and generally simple to understand, but if you are looking for speed (which is usually not a concern), use a simple for loop.



const numbers = [1, 2, 3, 4];
let sum = 0;
for (let i = 0; i



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:

eval([1,"2;alert('Malicious code!')"].join('+'))`



Of course displaying an alert isn't the worst thing that could happen. The only reason I have included this is as an answer Ortund's question as I do not think it was clarified.

Context

Stack Overflow Q#1230233, score: 1483

Revisions (0)

No revisions yet.