CodeBlanks Logo Icon CodeBlanks

Özet - Dizi metotları

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

index.js
const sales = [80, 150, 200, 60];
// 100 üstünü süz, %10 komisyon uygula, topla ve yazdır

Örnek çözüm

index.js
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

index.js
const scores = [40, 60, 80, 20];
// Toplamı ve ortalamayı hesapla, ikisini yazdır

Örnek çözüm

index.js
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ı

Soru
const nums = [1, 2, 3, 4];
const result = nums.filter(n => n > 1).____(n => n * 2);
Cevap
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.

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