Giriş
Bu yazımız görsel ağırlıklı olacak.
Reduce
, boyutu küçültme anlamına gelir. Bir array üzerinde işlem yapıp, daha küçük boyutlu (genellikle tek elemanlı) bir dizi elde etme işlemi Reduce
, SQL ifadesiyle bir Aggregate
işlemidir.
Aslında Filter
işlemi de Reduce
ile tanımlanabilse de genellikle Reduce
işlemi sonucunda tek elemanlı bir sonuç çıkması gerektiği farzedilir.
1 ile 6 arasındaki sayılar bir array, bu sayıların toplamı veya faktöryeli ise bir Reduce
işlemidir.
Reduce Uygulaması
Reduce
algoritmasını uygulayabilmek için:
- İlk adımda array’in ilk iki elemanı alınır ve
Reducer
fonksiyonu ile ilk değer hesaplanır - Diğer adımlarda
Reducer
fonksiyonun ilk parametresi geçmişten gelen sonuç, diğer parametre ise array’in bir sonraki elemanı olur. - Son elemana gelindiğinde
Reducer
fonksiyonundan çıkan değer sonuç olur. - Bazı durumlarda
Reducer
fonksiyonu için başlangıç değeri (seed
) verilir böylece ilk adımda array’in ilk elemanı ile bu değerreducer
fonksiyonuna girer.
Örnek
1’den 6’ya kadar olan sayıları toplamak için Pseudo kodu yazıp ve fonksiyon akışını modelleyelim.
1[1,2,3,4,5,6]
2
3reducer(a,b) -> return a + b;
4
51. reducer(1,2) => 3
62. reducer(3,3) => 6
73. reducer(6,4) => 10
84. reducer(10,5) => 15
95. reducer(15, 6) => 21
10 ^^
Burada 1,3,6,10, 15
değerlerinin ara sonuçlar olduğuna dikkat edin. Her bir ara sonuç, dizinin bir sonraki elemanıyla reducer
fonksiyonuna giriyor ve bir sonraki sonucu hesaplıyor.