JavaScript reduce() metodu nedir ve nasıl kullanılır?

4 min read

Table of Contents

JavaScript’in reduce() metodu, diziler üzerinde çalışan güçlü ve esnek bir fonksiyondur. Bu metod, bir dizideki tüm elemanları tek bir değere indirgemek için kullanılır. Kısacası, reduce() fonksiyonu bir dizi üzerinden geçer ve her eleman için bir geri çağırım fonksiyonu uygular. Bu işlem sonucunda, birikimli bir sonuç elde edilir. Bu birikimli sonuç, dizi elemanlarının toplamı, çarpımı veya herhangi bir özelleştirilmiş birleştirme işlemi olabilir.

JavaScript’te reduce() fonksiyonunun gücünü keşfetmek, bir sihirbazın asasını keşfetmeye benzer. Başlangıçta basit görünebilir; ancak derinlere daldıkça, bu metodun sağladığı esneklik ve güç karşısında şaşırmak mümkündür. İster bir dizi sayının toplamını hesaplayın, ister kompleks veri yapılarını dönüştürün, reduce() metodunun sunduğu imkanlar oldukça geniştir.

reduce() metodu, iki parametre alır: Bir geri çağırım fonksiyonu ve opsiyonel olarak, birikimli değerin başlangıç değeri. Geri çağırım fonksiyonu dört parametre alır; birikimli değer (accumulator), şu anki değer (currentValue), şu anki indeks (currentIndex) ve dizi (array) kendisi. İşte bu esneklik, reduce() metodunu JavaScript’in en güçlü araçlarından biri yapar.

Bu metodun kullanımı özellikle fonksiyonel programlama yaklaşımında yaygındır. Çünkü reduce(), veriler üzerinde dönüşümler ve hesaplamalar yaparken yan etkileri en aza indirgeyen saf fonksiyonlar kullanmayı teşvik eder. Dolayısıyla, reduce() fonksiyonunu etkin bir şekilde kullanarak, kodunuzun okunabilirliğini ve bakımını kolaylaştırabilir, yan etkileri azaltabilir ve daha öngörülebilir sonuçlar elde edebilirsiniz.

Kullanım senaryoları

Elbette, JavaScript’in reduce() metodunun kullanım senaryolarını çeşitli örneklerle ele alalım:

Toplam Hesaplama

Dizideki sayıların toplamını hesaplamak için en yaygın senaryolardan biridir. Bu, reduce() metodunun temel kullanım örneklerinden birini oluşturur.

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

Bu örnekte, reduce() metodu dizideki tüm sayıları toplar ve sonucu döndürür.

Objelerdeki Değerleri Toplama

Bir dizi içerisindeki objelerde belirli bir anahtara ait değerlerin toplamını hesaplama işlemidir.

const urunler = [
  { adi: 'Elma', fiyat: 10, adet: 3 },
  { adi: 'Muz', fiyat: 5, adet: 2 },
  { adi: 'Portakal', fiyat: 8, adet: 4 }
];

const toplamFiyat = urunler.reduce((acc, urun) => acc + (urun.fiyat * urun.adet), 0);
console.log(toplamFiyat); // 74

Bu senaryoda, her bir ürün için toplam fiyat hesaplanır ve tüm ürünlerin toplam fiyatı elde edilir.

Benzersiz Değerlerin Filtrelenmesi

Bir dizide tekrar eden değerleri kaldırarak benzersiz değerlerin bir listesini oluşturmak için kullanılabilir.

const sayilar = [1, 2, 2, 3, 4, 4, 5];
const benzersizSayilar = sayilar.reduce((acc, currentValue) => {
  if (!acc.includes(currentValue)) {
    acc.push(currentValue);
  }
  return acc;
}, []);

console.log(benzersizSayilar); // [1, 2, 3, 4, 5]

Bu örnekte, reduce() metodu tekrar eden değerleri filtreler ve yalnızca benzersiz değerleri bir dizi olarak döndürür.

Anahtar Değer Çiftlerinin Gruplandırılması

Dizideki objeleri, belirli bir anahtara göre gruplandırmak için kullanılır. Örneğin, kişilerin yaşlarına göre gruplandırılması:

const kisiler = [
  { ad: 'Ahmet', yas: 20 },
  { ad: 'Mehmet', yas: 30 },
  { ad: 'Ayşe', yas: 20 }
];

const yasGruplari = kisiler.reduce((acc, kisi) => {
  if (!acc[kisi.yas]) {
    acc[kisi.yas] = [];
  }
  acc[kisi.yas].push(kisi);
  return acc;
}, {});

console.log(yasGruplari);
/*
{
  "20": [{ ad: 'Ahmet', yas: 20 }, { ad: 'Ayşe', yas: 20 }],
  "30": [{ ad: 'Mehmet', yas: 30 }]
}
*/

Bu örnekte, kişiler yaşlarına göre gruplandırılmıştır.

Dizi Elemanlarının Çarpımı

Dizideki tüm elemanların çarpımını hesaplamak, reduce() metodunun başka bir kullanımıdır.

const sayilar = [1, 2, 3, 4];
const carpim = sayilar.reduce((acc, currentValue) => acc * currentValue, 1);
console.log(carpim); // 24

Bu kullanım, reduce() metodunun toplama dışında da kullanılabileceğini gösterir.

Bu örnekler, reduce() metodunun JavaScript’te veri işleme ve dönüştürme görevlerinde ne kadar güçlü ve esnek olabileceğini göstermektedir. Yaratıcılığınızı kullanarak reduce() metodunu çok çeşitli durumlar için uyarlayabilirsiniz.

Sonuç olarak, reduce() fonksiyonu, JavaScript dünyasında bir keşif yolculuğuna çıkmak isteyen her geliştirici için vazgeçilmez bir araçtır. Bu metodun sunduğu esneklik ve gücü keşfettikçe, veri işleme ve dönüştürme görevlerinizde daha etkili ve verimli olmanın kapılarını aralayacaksınız.

Share this Post

Birlikte Harika Bir Sey Insa Edelim

Aklinizda bir proje mi var? Formu doldurun, size en kisa surede donelim.

Hizli geri donus
Ucretsiz proje danismanligi

Veya Bize Dogrudan Ulasin