Javascript – How to find the sum of an array of numbers

arraysjavascriptjquery

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.

Best Solution

In Lisp, this'd be exactly the job for reduce. You'd see this kind of code:

DEMO

(reduce #'+ '(1 2 3)) ; 6

Fortunately, in JavaScript, we also have reduce! Unfortunately, + is an operator, not a function. But we can make it pretty! Here, look:

const sum = [1, 2, 3].reduce(add, 0); // with initial value to avoid when the array is empty

function add(accumulator, a) {
  return accumulator + a;
}

console.log(sum); // 6

Isn't that pretty? :-)

Even better! If you're using ECMAScript 2015 (aka ECMAScript 6), it can be this pretty:

const sum = [1, 2, 3].reduce((partial_sum, a) => partial_sum + a, 0);
console.log(sum); // 6