Meydan okuma - Dizi işlemleri
Dizi, döngü ve reduce ile bir mağaza satış listesinden toplam ciroyu hesaplarsın.
Satış listesi meydan okuması
Bu meydan okumada bir mağazanın satış listesinden toplam ciroyu hesaplayacaksın. Her satış bir nesnedir: {product, price, quantity}.
Toplam ciroyu iki yolla bulabilirsin: bir for döngüsüyle her satışı gezip toplama eklemek, ya da reduce ile tek bir satırda katlamaktır. Her iki yöntem de bir akümülatör değişkeni tutar.
Görevde sen reduce kullanacaksın. Akümülatör sum, başlangıç değeri 0 olur. Her adımda price * quantity değerini sum'a eklersin.
reduce ile toplam bulmak
reduce, bir diziyi tek bir değere indirir. İki parametre alır: bir callback ve bir başlangıç değeri.
Callback her eleman için çağrılır ve iki parametre alır: sum (o ana kadar biriken değer) ve sale (şu anki eleman). Callback, yeni sum değerini döndürür.
Satış listesinde her adımda sum + sale.price * sale.quantity döndürürsün. Başlangıç değeri 0 olduğunda ilk satıtta sum sıfırdır ve sonuç doğru birikir.
Uygulama totalRevenue fonksiyonunu yaz
totalRevenue adında bir fonksiyon tanımla. sales parametresi bir satış dizisi alsın; her satış {product, price, quantity} yapısındadır. reduce ile her satışın price * quantity değerini topla. Başlangıç değeri olarak 0 ver ve toplamı döndür.
Örnek çözümü göster
totalRevenue içinde sales.reduce çağır. Callback sum ve sale alır; sum + sale.price * sale.quantity döndür. İkinci argüman 0.
Örnek çözüm:
function totalRevenue(sales) {
return sales.reduce(function (sum, sale) {
return sum + sale.price * sale.quantity;
}, 0);
}
Kendini test et
-
for...of ile akümülatöre ekle
let total = 0; for (const sale of sales) { total ____= sale.price * sale.quantity; }Cevabı göster
let total = 0; for (const sale of sales) { total +== sale.price * sale.quantity; } -
reduce fonksiyonunun ikinci parametresi neyi belirler?
sales.reduce(callback, 0);- Dizinin uzunluğunu
- Akümülatörün başlangıç değerini
- İlk elemanı atlar
- Callback'in dönüş tipini
Cevabı göster
Akümülatörün başlangıç değerini — Doğru. İkinci parametre akümülatörün ilk değeridir; verilmezse dizinin ilk elemanı kullanılır.