You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算数组中元素的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:39:22