CodeBlanks Logo Icon CodeBlanks

reduce ile birleştirme

JavaScript kursu · Başlangıç · Ders 69/133

reduce ile diziyi tek bir değere indirgemeyi ve akümülatör mantığını öğrenirsin.

reduce ile birleştirme

reduce diziyi tek bir değere indirir. Her adımda bir akümülatör ve güncel elemanı alır; callback yeni akümülatörü döndürür. En sonda kalan akümülatör sonucudur.

Toplam, çarpım, en büyük değer veya nesne birleştirme gibi işlerde kullanışlıdır. Başlangıç değerini ikinci argüman olarak verirsin; vermezsen ilk eleman başlangıç sayılır. Boş diziye başlangıç değeri olmadan çağırmak hata fırlatır.

Akümülatör nedir?

Akümülatör, reduce boyunca taşınan 'şu ana kadar biriktirilen' değerdir. Her adımda callback, akümülatörü güncel elemanla birleştirip yeni akümülatör üretir.

Başlangıç değeri verirsen ilk adımda akümülatör o değer olur. Vermezsen ilk eleman akümülatör, ikinci eleman ise güncel eleman kabul edilir; yani ilk adım atlanır. Bu farkı bilmek hataları önler.

Uygulama Sepetin toplam fiyatını bul

cart dizisindeki tüm fiyatları toplayıp total değişkenine koy. Başlangıç değeri 0 kullan. Sonucu konsola yazdır.

Örnek çözümü göster
const cart = [120, 80, 200];
// fiyatları topla
const total = cart.reduce((acc, price) => acc + price, 0);
console.log(total);

Uygulama En büyük sayıyı reduce ile bul

nums dizisindeki en büyük sayıyı reduce ve Math.max ile bul. Sonucu biggest değişkenine koy ve konsola yazdır.

Örnek çözümü göster
const nums = [4, 9, 2, 7];
// en büyük sayıyı bul
const biggest = nums.reduce((acc, n) => Math.max(acc, n));
console.log(biggest);

Kendini test et

  1. const sum = [1,2,3].reduce((acc, n) => acc + n, 0); sonucu ne olur?

    const sum = [1, 2, 3].reduce((acc, n) => acc + n, 0);
    • 6
    • 0
    • [1,2,3]
    • undefined
    Cevabı göster

    6 — Doğru. 0 + 1 + 2 + 3 = 6 olur.

  2. dizinin toplamını bul

    const nums = [10, 20, 30];
    const total = nums.reduce((acc, n) => ____, 0);
    console.log(total);
    Cevabı göster
    const nums = [10, 20, 30];
    const total = nums.reduce((acc, n) => acc + n, 0);
    console.log(total);
  3. reduce kullanımını amacıyla eşleştir

    acc + n, 0
    dizinin toplamı
    acc * n, 1
    dizinin çarpımı
    Math.max(acc, n)
    en büyük eleman
    acc + n.length, 0
    toplam uzunluk

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