关于javascript:用forEach函数计算总和?

Calculate sum with forEach function?

本问题已经有最佳答案,请猛点这里访问。

我想用JavaScript中的foreach数组函数计算和。但我没有得到我想要的。

1
2
3
4
5
6
7
8
function sum(...args) {
  args.forEach(arg => {
    var total = 0;
    total += arg;
    console.log(total);
 });
}
sum(1, 3);

如何用foreach求总数,还是用reduce方法?


你最好使用Array#reduce,因为它是为这种目的而制造的。

它需要一个起始值,如果没有给定,它将获取数组的前两个元素,并将数组逐字缩减为一个值。如果数组为空且未提供起始值,则会引发错误。

1
2
3
4
5
6
7
function sum(...args) {
    return args.reduce((total, arg) => total + arg, 0);
}

console.log(sum(1, 3));
console.log(sum(1));
console.log(sum());


1
2
3
4
5
function sum(...args) {
    return args.reduce((total, amount) => total + amount);
}

console.log(sum(1,3));


您必须将total=0;移出循环-每次迭代都将其重置为0

1
2
3
4
5
6
7
8
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

1
2
3
4
5
6
7
8
function sum(...args) {
var total = 0;
args.forEach(arg => {
  total += arg;
  console.log(total);
 });
}
sum(1, 3);


你应该把total放在foreach循环之外:

1
2
3
4
5
6
7
8
9
function sum(...args) {
  var total = 0;
  args.forEach(arg => {
    total += arg;
  });
  console.log(total);
}

sum(1, 3);