如何将所有mybag
数组值添加到total_w
,其中mybag
的值为float
或int
?
var mybag = [];
mybag[0] = 20.50;
mybag[1] = 10.13;
mybag[3] = 0;
//so total_w should be 30.63 not: 20.5010.13
var total_w = 0;
var comma = '';
for (key in mybag) {
active_mybag = active_mybag + comma + parseFloat(mybag[key]).toFixed(2);
total_w = Math.round(total_w + parseFloat(mybag[key]).toFixed(2));
comma = ",";
}
console.log('> ', total_w, active_mybag);
答案 0 :(得分:2)
您的代码存在许多问题,因此这里不是一系列评论,而是答案。
var mybag = [ /* bunch of values */];
var total = +mybag.reduce((a, b) => a + +b, 0).toFixed(2);
将使用数字或数字字符串。 Fiddle。这是一个分解:
reduce从0开始。
' a'参数是累加器。
' b' parameter是该迭代的数组值。
b由一元加运算符
转换为数字b被添加到a并返回
总和减少为2位精度的数字字符串
通过前面的加号转换回数字
答案 1 :(得分:1)
var active_mybag = [];
var total_w = mybag.reduce(function(acc,e){
// Value of array to float
e = parseFloat(e);
// Collect text representations of rounded value
active_mybag.push( e.toFixed(2) );
// Subtotal
return acc + e;
},0 ).toFixed(2); // Convert sum to string representation
active_mybag = active_mybag.join(',');