CodeBlanks Logo Icon CodeBlanks

Toplam hesaplama

Sepet toplamını hesaplamayı öğrenirsin.

Sepet toplamı

Bir sepetin toplamı, her CartItem için product.price * quantity değerlerinin toplamıdır. reduce metodu ile tek geçişte hesaplayabilirsin. Başlangıç değeri 0 olmalıdır.

function total(cart: Cart): number {
  return cart.items.reduce((sum, i) => sum + i.product.price * i.quantity, 0);
}

reduce nasıl çalışır

reduce, diziyi tek bir değere indirger. İlk parametre akümülatör ve öğe alır; ikinci parametre başlangıç değeridir. Burada 0 ile başlayıp her öğenin fiyatını akümülatöre ekleriz.

const sum = cart.items.reduce((acc, i) => acc + i.product.price * i.quantity, 0);
// acc: önceki toplam, i: CartItem, 0: başlangıç değeri

Uygulama total fonksiyonu yaz

Product, CartItem, Cart arayüzlerini tanımla. total(cart: Cart): number fonksiyonunu yaz. Her öğe için i.product.price * i.quantity hesapla ve hepsini reduce ile topla. Başlangıç değeri 0 olmalı. İki öğeli bir sepetle test et ve sonucu yazdır.

Başlangıç kodu

index.ts
// Product, CartItem, Cart arayüzlerini tanımla
// total(cart: Cart): number yaz
// her öğenin fiyatını miktarıyla çarp ve topla
// iki öğeli bir sepetle test et, sonucu yazdır

Örnek çözüm

index.ts
interface Product { id: string; name: string; price: number; }
interface CartItem { product: Product; quantity: number; }
interface Cart { items: CartItem[]; }

function total(cart: Cart): number {
  return cart.items.reduce((sum, i) => sum + i.product.price * i.quantity, 0);
}

const cart: Cart = {
  items: [
    { product: { id: "a", name: "Elma", price: 5 }, quantity: 2 },
    { product: { id: "b", name: "Armut", price: 3 }, quantity: 4 }
  ]
};
console.log(total(cart));

Beklenen çıktı

22

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir CartItem'ın toplam fiyatı nasıl hesaplanır?

  • product.price * quantity Doğru cevap
  • product.price + quantity
  • product.price
  • quantity

Açıklama: Bir öğenin toplam fiyatı, ürün fiyatının miktar ile çarpımıdır: product.price * quantity. Toplama yanlış olur.

2 Çarpma işlecini tamamla

Soru
const itemTotal = i.product.price ____ i.quantity;
Cevap
const itemTotal = i.product.price * i.quantity;

Açıklama: Öğe toplamı, fiyat ile miktarın çarpımıdır: i.product.price * i.quantity. +, / ve - yanlış işlem yapar.

3 Toplam hesaplama parçaları

Kavram Anlamı
price * quantity Öğe toplam fiyatı
reduce((sum, i) => ..., 0) Tüm öğeleri topla
0 Başlangıç değeri
sum + itemTotal Akümülatör güncellemesi

Başlangıç bölümündeki tüm dersler