如何计算数组中元素的productPrice与quantity乘积之和?
解决方法
你之前写的let sum = itemsInCart.reduce(0, +)无法直接运行,因为Order类型并没有默认实现加法运算符,你需要在reduce的闭包里手动计算每个元素的总价贡献。
步骤1:计算总价总和
使用reduce遍历数组,对每个Order元素计算productPrice * quantity,再将结果累加到初始值0上:
let totalSum = itemsInCart.reduce(0) { accumulatedTotal, item in accumulatedTotal + (item.productPrice * item.quantity) } // 简化写法: // let totalSum = itemsInCart.reduce(0) { $0 + $1.productPrice * $1.quantity }
步骤2:更新totalCost变量
因为totalCost是字符串类型,把计算出的数值总和转换成字符串即可:
var totalCost = "" totalCost = String(totalSum) // 如果需要格式化货币(比如保留两位小数),可以用NumberFormatter优化: // let formatter = NumberFormatter() // formatter.numberStyle = .currency // totalCost = formatter.string(from: NSNumber(value: totalSum)) ?? ""
完整可运行示例
// 补充Order结构体定义(确保代码完整) struct Order { let productUID: String let productName: String let productPrice: Int let quantity: Int } var itemsInCart = [Order(productUID: "abc1", productName: "Shoe", productPrice: 100, quantity: 1), Order(productUID: "abc2", productName: "Shirt", productPrice: 150, quantity: 1), Order(productUID: "abc3", productName: "Pants", productPrice: 180, quantity: 1)] var totalCost = "" // 计算总价总和 let totalSum = itemsInCart.reduce(0) { $0 + $1.productPrice * $1.quantity } // 更新totalCost totalCost = String(totalSum) print(totalCost) // 输出:430
内容的提问来源于stack exchange,提问作者Mus Harlem
相关产品推荐
相关产品推荐

