如何使用Javascript实现取值、相乘并计算总和?
计算数组中商品总价总和的问题修复
你的代码存在几个关键错误,导致无法得到正确结果:
- 变量名拼写错误:你把
jsonprice误写成了janprice,后续使用jsonprice时该变量未定义,最终得到NaN(而非你说的null) - 未实现累加逻辑:每次循环都直接用
jsontotal = ...覆盖之前的值,最后只会保留最后一项的乘积,而非所有项的总和 - 类型转换不当:
unitprice是带小数的字符串,用parseInt会丢失小数部分,应该用parseFloat或Number()来转换 - 变量未声明:
jsonqty和价格变量没有用var/let/const声明,会变成全局变量,不符合代码规范
修复后的for循环版本
var jsontotal = 0; for(var i = 0; i < related_items.length; i++){ const jsonqty = parseInt(related_items[i].qty); const jsonprice = parseFloat(related_items[i].unitprice); jsontotal += jsonqty * jsonprice; // 使用+=实现累加 } console.log(jsontotal); // 输出正确总和:15638.35
更简洁的现代JS写法(使用reduce)
如果想让代码更简洁,可以用数组的reduce方法,专门用于累加类计算:
const total = related_items.reduce((sum, item) => { const qty = parseInt(item.qty); const price = parseFloat(item.unitprice); return sum + qty * price; }, 0); // 初始值设为0 console.log(total); // 同样输出15638.35
内容的提问来源于stack exchange,提问作者Nathan Zoho
相关产品推荐
相关产品推荐

