Javascript: Map, Reduce ve Filter — Bölüm 3

1 5,570

reduce() sıra dışı öyküsüne hoş geldiniz. Ama önce filter() hakkında detaylı bilgiye aşağıdaki linkten ulaşabilirsiniz

Previously on “Avengers”

On kişi lazım on… Sen… Ben… Sen… Ben… Sen… Ula ben… Sen… Ben… Sen… Ben… Sen… Eee beeen…Sen gelme ulan ayı… Ayı babaydir it oğlu it…
— Kibar Feyzo

İkinci Bölüm

reduce(): Hesaplayan Adam.

 

“Dizinin her bir elemanı için; parametre olarak verilen (callback) reducer fonksiyonu çağırır ve dizinin tüm elamanlarına bu fonksiyonu uygulayarak fonksiyonda belirtilen işlemi yapar ve tek çıktılı bir sonuç oluşturur.”

 

 

 

 

recude() dizi içerisinde kümülatif hesaplar yapmamızı sağlayan bir araçtır.

 

  • callback: Dizinin her bir elemanı için çağrılacak olan fonksiyondur. Dört parametre alır. Fonksiyonun ilk parametresi olan accumulator fonksiyon içinde yapılan biriktirme(toplama , çıkarma vb) işleminin sonucudur. Bir önceki işlemden elde edilen sonuç bu parametrede tutulur. currentValuedizinin o anda işlem yapılan elemanıdır. Üçüncü parametresi olan indexdizinin o anda işlem yapılan elemanın indeksi ve dördüncü parametresi olan array ise map tarafında çağrılan dizidir. currentValue parametresi zorunlu olarak callback fonksiyonuna verilmeli, diğer parametreler isteğe bağlı olarak; verilebilir yada verilmeyebilir.
  • initialValue: callback fonksiyonu işleme başladığında kullanacağı başlangıç değeridir. Eğer değer atanmazsa. dizinin ilk değeri başlangıç değer olarak accumulator’e atanır.

Parametrelerin kullanımı

[1,2,3,4] şeklinde olan dizinin elemanlarını toplayalım. Denemek için burayı tıklayınız

reduce()’ın daha iyi anlaşılması için örneklere geçelim.

Örnek-1: Kişiler dizisinde en yüksek ve en düşük puanı bulalım. Denemek için burayı tıklayın. Başlangıç değeri verilmez ise kod hataya düşecektir.

Örnek-2: Kişiler dizisinde yaşlar toplamını hesaplayalım. Denemek için burayı tıklayın. Başlangıç değeri 0 verilmiştir. Eğer herhangi bir başlangıç verilmez ise script hataya düşecektir.

Örnek-3: Kişiler dizisini, cinsiyete göre gruplayıp sayısını yazdıralım. Denemek için burayı tıklayın. Başlangıç değeri için boş nesne “{}” verilmiştir.

Örnek-4: Kişiler dizisini cinsiyete göre gruplayıp yeni bir dizi oluşturalım. Denemek için burayı tıklayın. Başlangıç değeri için boş nesne “{}” verilmiştir.

 

Örnek-5: Kişiler dizisini istenilen bir özelliğe göre gruplayıp yeni bir dizi oluşturalım. Örnek 4’ün geliştirilmiş hali. Denemek için burayı tıklayın. Başlangıç değeri için boş nesne “{}” verilmiştir.

Örnek-6: Birden çok diziyi birleştirip, tek dizi haline getirelim ([[..],[…],[….] ] → [………]). Denemek için burayı tıklayın. Başlangıç değeri için boş dizi“[]” verilmiştir.

Örnek-7: Dizide tekrarlayan elemanları teke indirelim. Denemek için burayı tıklayın. Başlangıç değeri için boş dizi“[]” verilmiştir. Bu işlemi filter() ile daha hızlı bir şekilde yapabilirsiniz.

Örnek-8: Dizinin içindeki elemanların uzunluğunu hesaplayalım. Denemek için burayı tıklayın. Başlangıç değeri için boş dizi“[]” verilmiştir.

Örnek-9: Verilen nesneyi key- value şekline çevirelim. Denemek için burayı tıklayın. Başlangıç değeri için boş nesne “{}” verilmiştir.

Örnek-10: Dizi içindeki dizileri birleştirme. Denemek için burayı tıklayın. Başlangıç değeri için boş dizi“[]” verilmiştir.

Örnek-11: Belirli bir sırada yapılması gereken fonksiyonları reduce() ile birleştirip sırası ile çalıştıralım. Denemek için burayı tıklayınız

Örnek-12: Sayılar toplamı, fonksiyon parametresine girilen sayıların (parametre sonsuz sayıda olabilir) toplamı. Deneme için tıklayınız.

Bir sonraki bölümde kahramanlarımız güçlerini birleştirecekler.

Kaynaklar:

1 Comment
  1. frontend falan filan says

    Merhaba, herkes reduce konusunda array’de sayı toplatıp aha reduce bu diye saçmalamış. Verdiğiniz güzel örneklerle daha iyi anladım. Teşekkür ederim. İyi çalışmalar

Email adresiniz yayınlanmayacaktır.