Javascript 如何对forEach循环中生成的变量中的数字列表求和
我已经为每个循环创建了一个用于访问JSON数组中的数字的函数,该数组将是动态的,并且永远在变化,因此我隔离了变量中的数字(变量在循环中)。我的问题是:如何对变量中的数字求和 我试着在循环中做一个for循环,但没有成功 看起来有点像这样: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
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中返回整个集合的总和您的答案引导我找到了解决方案,感谢您的帮助。