2

I want to calculate sum with forEach array function in JavaScript. But I don't get what I want.

function sum(...args) {
  args.forEach(arg => {
    var total = 0;
    total += arg;
    console.log(total);
 });
}
sum(1, 3);

How to get total with forEach, or use reduce method?

Al Fahad
  • 1,794
  • 3
  • 23
  • 34
Milosh N.
  • 3,304
  • 5
  • 13
  • 25

4 Answers4

13

You may better use Array#reduce, because it is made for that kind of purpose.

It takes a start value, of if not given, it take the first two elements of the array and reduces the array literally to a single value. If the array is empty and no start value is supplied, it throws an error.

function sum(...args) {
    return args.reduce((total, arg) => total + arg, 0);
}

console.log(sum(1, 3));
console.log(sum(1));
console.log(sum());
Nina Scholz
  • 351,820
  • 24
  • 303
  • 358
7

You should put total outside forEach loop:

function sum(...args) {
  var total = 0;
  args.forEach(arg => {
    total += arg;
  });
  console.log(total);
}

sum(1, 3);
Al Fahad
  • 1,794
  • 3
  • 23
  • 34
BladeMight
  • 2,292
  • 2
  • 20
  • 33
1

You have to move the total=0; out of the loop - it is being reset to 0 on each iteration

function sum(...args) {
var total = 0;
args.forEach(arg => {
  total += arg;
  console.log(total); 
 });
}
sum(1, 3); // gives 1, 4 or in other words 0+1=1 then 1+3=4
function sum(...args) {
var total = 0;
args.forEach(arg => {
  total += arg;
  console.log(total);
 });
}
sum(1, 3);
gavgrif
  • 14,151
  • 2
  • 21
  • 24
1
function sum(...args) {
    return args.reduce((total, amount) => total + amount); 
}

console.log(sum(1,3));
Koen
  • 372
  • 2
  • 6