Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对forEach循环中生成的变量中的数字列表求和_Javascript_Loops_Sum - Fatal编程技术网

Javascript 如何对forEach循环中生成的变量中的数字列表求和

Javascript 如何对forEach循环中生成的变量中的数字列表求和,javascript,loops,sum,Javascript,Loops,Sum,我已经为每个循环创建了一个用于访问JSON数组中的数字的函数,该数组将是动态的,并且永远在变化,因此我隔离了变量中的数字(变量在循环中)。我的问题是:如何对变量中的数字求和 我试着在循环中做一个for循环,但没有成功 看起来有点像这样: const arrayhours = Array.from(json_obj); arrayhours.forEach(e=>{ const hours = parseFloat(e.hoursWorked); cons

我已经为每个循环创建了一个用于访问JSON数组中的数字的函数,该数组将是动态的,并且永远在变化,因此我隔离了变量中的数字(变量在循环中)。我的问题是:如何对变量中的数字求和

我试着在循环中做一个for循环,但没有成功

看起来有点像这样:

 const arrayhours = Array.from(json_obj);
 arrayhours.forEach(e=>{ 
              const hours = parseFloat(e.hoursWorked);

console.log(hours); //returns for example 1.25 9 5 8 7 as seperate objects.
});

您可以使用
Array.reduce()
获取数组中的数字之和

const arrayhours = Array.from(json_obj);
arrayhours.forEach(e=>{ 
  const hours = parseFloat(e.hoursWorked);
  console.log(hours); //returns for example 1.25 9 5 8 7 as seperate objects.
});
const sum = arrayhours.reduce((acc, val) => acc + parseFloat(val.hoursWorked), 0)

在循环之前使用
让hours=0
初始化变量,然后使用
+=
添加一些内容(而不是
=
)来分配一些内容

最后将
控制台.log
移出循环:

const arrayhours = Array.from(json_obj);
let hours = 0;
arrayhours.forEach(e => { 
  const hours += parseFloat(e.hoursWorked);
});
console.log(hours);


const sum=arrayhours.reduce((acc,curr)=>acc+parseFloat(curr.hoursweed,10),0)

在评论中,AZ_uu使用了
+c.hoursweed
,这是一种JS技巧,可以将字符串转换为Int(如果可能的话)。 这是一种非常糟糕的编辑方式,因为它不是真正可读的。
最好使用parseInt或parseFloat函数。

让sum=arrayhours.reduce((a,c)=>a++c.hoursweed,0)这工作得很好,但是,我遗漏了一个参数,我认为这不重要,但在本例中它确实重要。我有一个if论点,它将常量“小时”缩小到在该时间段内工作的小时数。arrayhours.forEach(e=>{if(e.UnixTimestamp>=startselect&&e.UnixTimestamp acc+parseFloat(val.hoursWorked),0)console.log(sum);将在JSONY中返回整个集合的总和您的答案引导我找到了解决方案,感谢您的帮助。