Özet - Dizi metotları
- Node.js kursu
- Başlangıç
- Ders 64/116
- 5 dk
map, filter ve reduce'u birleştirerek bir satış raporu yazarsın.
Özet - Dizi metotları
Bu grupta beş dizi metodu öğrendin. map her elemanı dönüştürür, filter koşula uyanları süzer, reduce diziyi tek değere indirger, find ilk eşleşeni verir, forEach ise yan etki için her elemanı gezer.
Bunları zincirleyebilirsin: prices.filter(p => p > 100).map(p => p * 1.1) önce pahalıları süzer, sonra KDV ekler. Zincirleme, veriyi adım adım işlemenin güçlü bir yoludur.
Son örnekte bir satış raporu hazırlayacaksın: 100 birim üstü satışları süz, her birine %10 komisyon uygula ve toplam komisyonu hesapla. Üç metodu bir arada kullanacaksın.
Uygulama Satış raporu
[80, 150, 200, 60] satışlarından oluşan bir dizi tanımla. filter ile 100 üstü satışları seç, map ile her birinin %10 komisyonunu hesapla (satış * 10 / 100), sonra reduce ile toplam komisyonu bul (başlangıç 0). Toplamı console.log ile yazdır. Zincirleme kullanabilirsin.
Başlangıç kodu
const sales = [80, 150, 200, 60];
// 100 üstünü süz, %10 komisyon uygula, topla ve yazdırÖrnek çözüm
const sales = [80, 150, 200, 60];
const total = sales.filter(s => s > 100).map(s => s * 10 / 100).reduce((sum, c) => sum + c, 0);
console.log(total);Beklenen çıktı
35
Uygulama Toplam ve ortalama
[40, 60, 80, 20] notlarından oluşan bir dizi tanımla. reduce ile notların toplamını (başlangıç 0) hesapla ve console.log ile yazdır. Sonra not sayısına bölerek ortalamayı hesapla ve ayrıca yazdır.
Başlangıç kodu
const scores = [40, 60, 80, 20];
// Toplamı ve ortalamayı hesapla, ikisini yazdırÖrnek çözüm
const scores = [40, 60, 80, 20];
const total = scores.reduce((sum, s) => sum + s, 0);
console.log(total);
const avg = total / scores.length;
console.log(avg);Beklenen çıktı
200 50
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Metotları amacına eşle
| Kavram | Anlamı |
|---|---|
map |
Dönüşüm |
filter |
Süzme |
reduce |
Tek değere indirgeme |
find |
İlk eşleşen |
forEach |
Yan etki |
2 Hangi zincir doğru?
- reduce().map().filter()
- map().reduce().filter()
- forEach().map().filter()
- filter().map().reduce() Doğru cevap
Açıklama: önce süz, sonra dönüştür, en son indirge.
3 Zincirleme çağrı
const nums = [1, 2, 3, 4];
const result = nums.filter(n => n > 1).____(n => n * 2);
const nums = [1, 2, 3, 4];
const result = nums.filter(n => n > 1).map(n => n * 2);
Açıklama: map ile her elemanı iki katına çıkarırsın.