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, dizinin her bir öğesi için sağlanan bir fonksiyonu yürüterek bir diziyi tek bir değere "indirgemenize" olanak tanır. Bu tek değer bir sayı, dize, nesne veya hatta başka bir dizi olabilir.

İşte reducer'ın söz dizimi:

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

Temel Bileşenler:

  1. accumulator: callback'in dönüş değerlerini biriktirir (bunu yürüyen toplam olarak düşünebilirsiniz)
  1. currentValue: Dizide o anda işlenen öğe
  1. currentIndex: (isteğe bağlı) Mevcut elemanın indeksi
  1. array: (isteğe bağlı) reduce() yönteminin çağrıldığı dizi
  1. initialValue: (isteğe bağlı) Callback fonksiyonunun ilk çağrısındaki 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 ürünlerini temsil eden bir nesne dizisi alan calculateGroceryTotal adında bir fonksiyon oluşturun.

Her nesnenin iki özelliği vardır:

  • name: string (ürünün adı)
  • price: number (ürünün fiyatı)

Fonksiyon şunları yapmalıdır:

  1. Tüm ürünlerin toplam maliyetini hesaplayın
  2. Bir indirim uygulayın: - Toplam 100'ün üzerindeyse %10 indirim uygulayın
  3. Toplam 50'nin üzerinde ancak 100'e eşit veya altındaysa %5 indirim uygulayın
  4. 50 veya daha düşük toplamlar için indirim uygulamayın.

Şunları içeren bir nesne döndürün:

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

Kopya kağıdı

reduce() metodu, her bir öğe için bir fonksiyon çalıştırarak bir diziyi tek bir değere indirger:

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

Temel Bileşenler:

  • accumulator: Geri çağırma fonksiyonunun (callback) dönüş değerlerini biriktirir (yürüyen toplam)
  • currentValue: İşlenen mevcut öğe
  • currentIndex: (isteğe bağlı) Mevcut öğenin indeksi
  • array: (isteğe bağlı) reduce() metodunun çağrıldığı dizi
  • initialValue: (isteğe bağlı) accumulator için başlangıç değeri

Örnek - 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 yürütme:

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

// Çıktı:
// Accumulator: 0, Current Value: 1
// Accumulator: 1, Current Value: 2
// Accumulator: 3, Current Value: 3
// Accumulator: 6, Current Value: 4
// Sonuç: 10

Kendin dene

function calculateGroceryTotal(items) {
    // Kodu buraya yazın
    


    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