JavaScript'te Object ve Array Metodları: map, filter, reduce

JavaScript, modern yazılım geliştirmede en sık kullanılan dillerden biridir. Bu dilin sunduğu güçlü metotlar sayesinde verileri daha etkili bir şekilde işleyebiliriz. Bu yazıda, JavaScript'teki üç önemli ve sık kullanılan dizi metodu olan map, filter ve reduce'yi detaylı bir şekilde inceleyeceğiz. Bu metotlar, fonksiyonel programlamayı benimseyerek diziler üzerinde daha temiz ve anlaşılır kod yazmamıza olanak sağlar.

1. map Metodu

Tanım

map, dizinin her bir elemanını belirli bir işleme tabi tutarak yeni bir dizi döndüren bir array metodudur. Bu metod, orijinal diziyi değiştirmez; bunun yerine her bir eleman üzerinde belirtilen işlemi yaparak yeni bir dizi oluşturur.

Kullanım

let sayilar = [1, 2, 3, 4, 5];
let kareler = sayilar.map(sayi => sayi * sayi);
console.log(kareler); // [1, 4, 9, 16, 25]

Açıklama

  • map metodu, verilen callback fonksiyonunu dizinin her bir elemanı için çalıştırır.
  • Burada, sayi => sayi * sayi ifadesi, her bir elemanı alıp karesini alır.

Gerçek Dünya Örneği

Bir alışveriş sepetindeki her ürünün fiyatını %10 indirimli hale getirelim:

let urunler = [
  { ad: 'Telefon', fiyat: 3000 },
  { ad: 'Laptop', fiyat: 5000 },
  { ad: 'Tablet', fiyat: 2000 }
];

let indirimliUrunler = urunler.map(urun => ({
  ad: urun.ad,
  fiyat: urun.fiyat * 0.9
}));

console.log(indirimliUrunler);
// [{ad: 'Telefon', fiyat: 2700}, {ad: 'Laptop', fiyat: 4500}, {ad: 'Tablet', fiyat: 1800}]

Bu örnekte, her ürünün fiyatına %10'luk bir indirim uyguladık ve yeni bir dizi oluşturduk.


2. filter Metodu

Tanım

filter, dizideki elemanları belirli bir koşula göre süzer ve yalnızca koşula uyan elemanları içeren yeni bir dizi döndürür. Bu metod da orijinal diziyi değiştirmez, sadece koşul sağlanan elemanları döndürür.

Kullanım

let sayilar = [1, 2, 3, 4, 5, 6];
let ciftSayilar = sayilar.filter(sayi => sayi % 2 === 0);
console.log(ciftSayilar); // [2, 4, 6]

Açıklama

  • filter metodu, dizinin her bir elemanı üzerinde belirtilen koşulu kontrol eder.
  • Burada, sayi => sayi % 2 === 0 ifadesi, sadece çift sayıları seçer.

Gerçek Dünya Örneği

Bir e-ticaret sitesindeki, yalnızca stokta olan ürünleri listelemek:

let urunler = [
  { ad: 'Telefon', stokta: true },
  { ad: 'Laptop', stokta: false },
  { ad: 'Tablet', stokta: true }
];

let stoktaOlanUrunler = urunler.filter(urun => urun.stokta);
console.log(stoktaOlanUrunler);
// [{ad: 'Telefon', stokta: true}, {ad: 'Tablet', stokta: true}]

Bu örnekte, stokta özelliği true olan ürünleri filtreleyerek, sadece mevcut olanları listeliyoruz.


3. reduce Metodu

Tanım

reduce, dizideki tüm elemanları birleştirerek tek bir değere indirger. Bu metot, dizinin her bir elemanını işleyip tek bir sonuç döndürür. reduce metodu, genellikle toplama, çarpma gibi işlemler için kullanılır.

Kullanım

let sayilar = [1, 2, 3, 4, 5];
let toplam = sayilar.reduce((toplam, sayi) => toplam + sayi, 0);
console.log(toplam); // 15

Açıklama

  • reduce metodu, iki parametre alır: bir callback fonksiyonu ve başlangıç değeri.
  • Callback fonksiyonu, iki parametre alır: birikmiş değer (toplam) ve mevcut eleman (sayi).
  • İlk başta toplam sıfır olur ve her eleman ile toplanarak final değeri elde edilir.

Gerçek Dünya Örneği

Bir alışveriş sepetindeki tüm ürünlerin toplam fiyatını hesaplayalım:

let urunler = [
  { ad: 'Telefon', fiyat: 3000 },
  { ad: 'Laptop', fiyat: 5000 },
  { ad: 'Tablet', fiyat: 2000 }
];

let toplamFiyat = urunler.reduce((toplam, urun) => toplam + urun.fiyat, 0);
console.log(toplamFiyat); // 10000

Bu örnekte, tüm ürünlerin fiyatlarını toplayarak toplam tutarı hesapladık.


map, filter, reduce Arasındaki Farklar

  • map: Diziyi dönüştürür ve her bir eleman üzerinde işlem yaparak yeni bir dizi döndürür. Orijinal dizi değişmez.
  • filter: Diziyi süzer ve yalnızca belirtilen koşula uyan elemanları içeren yeni bir dizi döndürür.
  • reduce: Diziyi birleştirir ve birikmiş bir değer döndürür. Genellikle toplama, çarpma gibi işlemler için kullanılır.

Sonuç

JavaScript'teki map, filter ve reduce metodları, diziler üzerinde işlevsel ve etkili bir şekilde işlem yapmamıza olanak tanır. Bu metotlar sayesinde daha kısa ve anlaşılır kodlar yazabiliriz. Özellikle fonksiyonel programlama yaklaşımını benimseyenler için bu metodlar oldukça faydalıdır. Yazılım geliştirme sürecinde bu araçları etkin bir şekilde kullanmak, verimli ve sürdürülebilir projeler oluşturmanıza yardımcı olacaktır.