如何在JavaScript中编写接收未知数量参数的总价计算函数?
计算多个商品的总价总和
针对你需要计算不确定数量商品总价总和的需求,这里有几种实用的实现方式:
方法1:传入商品对象数组(推荐)
这种方式把每个商品的数量和单价封装成对象,逻辑清晰,不容易传错参数:
// 复用你原来的单个商品计算函数 const calculatePrice =(quantity,unitPrice)=>{ return quantity*unitPrice; } // 多商品总价计算函数 const calculateTotalPrice = (items) => { let total = 0; // 遍历每个商品,累加总价 for (const item of items) { total += calculatePrice(item.quantity, item.unitPrice); } console.log(total); return total; }; // 调用示例:传入两个商品的数组 calculateTotalPrice([ { quantity: 2, unitPrice: 3.5 }, { quantity: 3, unitPrice: 4.8 } ]); // 输出 21.4
如果想更简洁,也可以用数组的reduce方法:
const calculateTotalPrice = (items) => { const total = items.reduce((sum, item) => { return sum + calculatePrice(item.quantity, item.unitPrice); }, 0); console.log(total); return total; };
方法2:用剩余参数接收成对的数量和单价
如果不想用对象数组,也可以直接传入多组成对的数量和单价参数:
const calculateTotalPrice = (...args) => { let total = 0; // 每次取两个参数,计算单个商品总价后累加 for (let i = 0; i < args.length; i += 2) { total += args[i] * args[i + 1]; } console.log(total); return total; }; // 调用示例:依次传入数量、单价、数量、单价... calculateTotalPrice(2, 3.5, 3, 4.8); // 输出 21.4
注意事项
- 方法1的可读性和可维护性更好,尤其是商品属性增多(比如加入折扣)时,扩展起来更方便;
- 方法2要确保参数是成对传入的,否则会出现计算错误。
内容的提问来源于stack exchange,提问作者Alex Zhang
相关产品推荐
相关产品推荐

