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() yöntemi, dizi içindeki her öğe için sağlanan bir işlevi çalıştırarak bir diziyi tek bir değere “indirmenizi” sağlar. Bu tek değer bir sayı, dize, nesne 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);

Temel Bileşenler:

  1. accumulator: Geri çağırmanın dönüş değerlerini biriktirir (bunu devam eden toplam olarak düşünebilirsin)
  1. currentValue: Dizide işlenmekte olan geçerli öğe
  1. currentIndex: (isteğe bağlı) Geçerli öğenin dizini
  1. dizi: (isteğe bağlı) reduce() yönteminin çağrıldığı dizi
  1. initialValue: (isteğe bağlı) Geri çağırma işlevinin ilk çağrısında ilk bağımsız değişken 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

Kendi başına pratik yap: Online JavaScript derleyicisi