DEV Community

Eray Kaya
Eray Kaya

Posted on

Javascript Reduce Metodu Nasıl Çalışır?

Herkese merhaba arkadaşlar. İlk yazımda etrafımda gördüğüm kadarıyla underrated olduğunu düşündüğüm reduce metodunu ele alacağım.

Underrated olduğunu düşünmemin sebebi, genelde herkes bu fonksiyonu array içindeki değerleri toplamak için falan kullanıyor fakat bu metod çok daha fazlasını yapabilecek bir metod.

Öncelikle eğer Array.prototype.reduce diye bir metodumuz olmasaydı bunun gibi çalışan bir metodu nasıl yazardık ile başlayalım:

Reduce fonksiyonu accumulator yapısında bir fonksiyondur yani üzerinde kullanılan veriyi biriktirerek tek bir değere indirgemeye çalışır.

2 parametre alır bunlardan biri callback fonksiyonu diğeri ilk değerdir. Eğer ilk değer varsa accumulator ona eşit başlar yoksa eğer reduce kullanılan arrayin ilk elemanına eşit başlar.

function fakeReduce() {
  function reduce(callback, initialValue) {
    let accumulator;
    let start = 0;

    if(initialValue) {
      accumulator = initialValue;
   } else {
     accumulator = this[0];
     start = 1;
   }

  }

Enter fullscreen mode Exit fullscreen mode

Esas kısıma gelecek olursak eğer, callback fonksiyonu 4 değer alır bunlar: accumulator, o anki değer, index
ve fonksiyonu kullandığımız array'dir. Her for iterasyonunda callback fonksiyonumuz tekrar çalışır ve return değerimiz accumulator'dır.


  function fakeReduce(callback, initialValue) {
    let accumulator;
    let start = 0;
   //this bu fonksiyonda üzerinde kullandığımız arrayi gösterir
    if(initialValue) {
      accumulator = initialValue;
   } else {
     accumulator = this[0];
     start = 1;
   }

   for (let i = start; i < this.length; i++) {
     accumulator = callback(accumulator, this[i], i, this);
   }

   return accumulator;
  }

Enter fullscreen mode Exit fullscreen mode

Şu anda fonksiyonumuzun eksiği, error yönetimi. Buna girersem konu dağılabilir o yüzden önemli olan reduce metodunun nasıl çalıştığını anlamak. Bu sebeple bu yazının çok da uzun olmaması adına reduce'u basit bir toplama işleminden ziyade üzerinde kullandığımız arrayle nasıl oynayabileceğimizi gösteren örnekler sunacağım.

Javascript'le ilgili herhangi bir konuda yazı gelmesini istiyorsanız yorumlarda belirtebilirsiniz.

Bir sonraki yazıda görüşmek üzere...

Oldest comments (0)