用forEach函数计算总和? [复制]

Posted

技术标签:

【中文标题】用forEach函数计算总和? [复制]【英文标题】:Calculate sum with forEach function? [duplicate] 【发布时间】:2019-03-30 13:36:44 【问题描述】:

我想用 javascript 中的 forEach 数组函数计算总和。 但我没有得到我想要的。

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

sum(1, 3);

如何用 forEach 求总数,或者使用 reduce 方法?

【问题讨论】:

在 forEach 循环上方定义总计 了解 JS 作用域:css-tricks.com/javascript-scope-closures 【参考方案1】:

您最好使用Array#reduce,因为它就是为此目的而设计的。

它采用一个起始值,如果没有给出,它采用数组的前两个元素并将数组从字面上减少为一个值。如果数组为空且未提供起始值,则会引发错误。

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


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

【讨论】:

【参考方案2】:

您应该将total 放在 forEach 循环之外:

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


sum(1, 3);

【讨论】:

【参考方案3】:

你必须移动total=0;循环外 - 它在每次迭代时被重置为 0

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

【讨论】:

为什么不使用 reduce 而不是用这些额外的东西来丑化你的代码? 如何才能删除第一步,只有结果?【参考方案4】:
function sum(...args) 
    return args.reduce((total, amount) => total + amount); 


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

【讨论】:

以上是关于用forEach函数计算总和? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在窗口函数中计算运行总和

pandas使用resample函数计算特定疾病按月花费总和pct_change函数计算特定疾病按月花费总和环比变化率并使用matplotlib可视化疾病按月花费总和环比变化率

无法在递归java函数中计算总和

使用 hive udf 函数计算运行总和

JavaScript forEach:如何计算 forEach 函数写入的行数?

如何计算使总和最小化的点?