reduce ile birleştirme
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
-
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.
-
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); -
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