Быстрый расчет общей суммы корзины покупокIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Быстрый расчет общей суммы корзины покупок

Сообщение Anonymous »

Как лучше всего рассчитать общую сумму корзины для покупок при условии, что
  • если у вас есть один и тот же товар дважды, покупатель получит 50 Скидка %.
  • если у вас есть один и тот же товар 3 раза, клиент получит 1 товар бесплатно. Обычно при покупке 2 получают 1 бесплатно.
Например, давая массив фруктов..
[
Basket(productName: "Apple", productPrice: 1, productQuantity: 1),
Basket(productName: "Banana", productPrice: 2, productQuantity: 3),
Basket(productName: "Kiwi", productPrice: 3, productQuantity: 2),
]

Отдача выше корзины покупок...
Фрукты Название цены
Яблоко * 1 = 1
Банан * 3 = 6
Киви * 2 = 6
Общая сумма. = 13 ..
где общая сумма должна быть 8. Я видел пример возврата общей суммы с использованием функции reduce, где я могу вернуть общую сумму, но я не уверен, как мне этого добиться.
struct Product {
var productName: String
var productPrice: Int
var productQuantity: Int
}

class ShoppingCart {

var products: [Product] = []
var productTotal: Double = 0

func add(item: Product) -> Double {
if item.productQuantity < 0 {
print("product is emptry ")
} else {
products.append(item)
}
self.calculateTotal()

return productTotal
}
func calculateTotal() {
if let index = products.firstIndex(where: { $0.productQuantity > 2 }) {

let grandtTotal = products.reduce(0.0, { $0 + Double($1.productQuantity * $1.productPrice) })
productTotal = grandtTotal - Double(products.first?.productPrice ?? 0)

} else if let index = products.firstIndex(where: { $0.productQuantity >= 1 }) {
let grandtTotal = products.reduce(0.0, { $0 + Double($1.productQuantity * $1.productPrice) })
productTotal = grandtTotal - Double((products.first?.productPrice ?? 0) / 2)
} else {
productTotal = products.reduce(0.0, { $0 + Double($1.productQuantity * $1.productPrice) })
}
}
}

let singleProduct = Product(productName: "Banana", productPrice: 10, productQuantity: 10)

var shpooingCart = ShoppingCart()
let result = shpooingCart.add(item: singleProduct)

print(result)



Подробнее здесь: https://stackoverflow.com/questions/790 ... l-in-swift
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»