如何计算对象数组的交易总额?JavaScript函数问题排查
修复totalTransactions函数计算交易总金额的问题
你的代码存在两个核心错误,导致无法正确计算交易总金额:
- 遍历数组时,没有访问到每个交易对象的
amount属性,直接对数组元素本身进行了错误操作 - 累加逻辑完全颠倒,应该是将每个交易的金额加到总和
sum上,而非把sum赋值给数组元素
修复后的代码方案
方案一:普通for循环(直观易懂)
function totalTransactions(transactions) { let sum = 0; for (let i = 0; i < transactions.length; i++) { // 访问每个交易对象的amount属性,累加到sum sum += transactions[i].amount; } return sum; }
方案二:forEach遍历(简洁易读)
function totalTransactions(transactions) { let sum = 0; transactions.forEach(transaction => { sum += transaction.amount; }); return sum; }
方案三:reduce方法(函数式风格,适合数组累加场景)
function totalTransactions(transactions) { return transactions.reduce((total, transaction) => { return total + transaction.amount; }, 0); // 初始累加值设为0 }
验证示例
用你提供的测试数组调用修复后的函数:
let transactions = [ { name: "Tons of glitter", amount: 70 }, { name: "Porcelain Pink Flamingos", amount: 92 }, { name: "Chandelier replacement", amount: 10000, }, { name: "Dinner at TGIF x6", amount: 350 } ]; totalTransactions(transactions); // 返回 10512
内容的提问来源于stack exchange,提问作者Mist
相关产品推荐
相关产品推荐

