Menu
Coddy logo textTech

Reduce Metodu

Coddy'nin JavaScript Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 54 / 65.

reduce() metodu, dizinin her bir elemanı için sağlanan bir işlevi çalıştırarak bir diziyi tek bir değere "indirgemenize" (reduce) olanak tanır. Bu tek değer bir sayı, metin (string), nesne (object) veya hatta başka bir dizi olabilir.

İşte indirgeyicinin (reducer) sözdizimi:

array.reduce(function(accumulator, currentValue, currentIndex, array) {
    // güncellenmiş accumulator değerini döndür
}, initialValue);

Key Components:

  1. accumulator: Callback'in geri dönüş değerlerini biriktirir (bunu yürütülen toplam olarak düşünebilirsiniz)
  1. currentValue: Dizi içinde işlenmekte olan mevcut eleman
  1. currentIndex: (isteğe bağlı) Geçerli öğenin dizini (index)
  1. array: (isteğe bağlı) reduce() yönteminin üzerinde çağrıldığı dizi
  1. initialValue: (isteğe bağlı) Callback fonksiyonunun ilk çağrısında ilk argüman olarak kullanılacak değer

Örneğin - sayıların toplamı:

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15

Adım Adım Nasıl Çalışır:

const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => {
    console.log(`Accumulator: ${acc}, Current Value: ${curr}`);
    return acc + curr;
}, 0);

// Çıktı:
// Biriktirici: 0, Mevcut Değer: 1
// Biriktirici: 1, Mevcut Değer: 2
// Biriktirici: 3, Mevcut Değer: 3
// Biriktirici: 6, Mevcut Değer: 4
// Nihai sonuç: 10
challenge icon

Görev

Kolay

Market alışverişi öğelerini temsil eden bir nesne dizisi alan calculateGroceryTotal adında bir function oluşturun.

Her nesnenin iki özelliği vardır:

  • name: string (öğenin adı)
  • price: number (öğenin fiyatı)

Fonksiyon şunları yapmalıdır:

  1. Tüm öğelerin toplam maliyetini hesaplamalıdır
  2. Bir indirim uygulamalıdır: - Toplam 100'ün üzerindeyse %10 indirim uygulayın
  3. Toplam 50'nin üzerinde ancak 100'e eşit veya altında ise %5 indirim uygulayın
  4. 50 veya daha az olan toplamlar için indirim uygulanmaz.

Şunları içeren bir nesne return edin:

  • originalTotal: indirimden önceki toplam
  • discount: tasarruf edilen miktar
  • finalTotal: indirimden sonraki nihai miktar

Kendin dene

function calculateGroceryTotal(items) {
    // Kodu buraya yaz
    


    return {
        originalTotal: Math.round(originalTotal * 100) / 100,  // 2 ondalık basamağa yuvarla
        discount: Math.round(discount * 100) / 100,
        finalTotal: Math.round(finalTotal * 100) / 100
    };
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler