Array.reduce() fonksiyonu, dizideki elemanları tek tek belirtilen fonksiyona parametre olarak aktararak, fonksiyonun toplama mantığına göre her elemanın toplamından elde edilen değeri bir sonrakine aktararak tüm değerlerin tek bir değere indirgenmesini sağlar. Daha kısa bir ifadeyle, belirtilen fonksiyonun toplama mantığı ile tüm değerleri toplar.
Array.reduce() fonksiyonu Mart 2009 itibariyle sadece Firefox 3.0 ve üzeri sürümlerinde çalışır. Bu fonksiyonu tüm modern tarayıcılarda kullanmak için Array reduce fonksiyon betiğini kullanabilirsiniz.
Sözdizimi
toplamDeger = Array.reduce(fonk [, ilkDeger])
fonk | Dizi elemanlarının parametre olarak aktarılarak, toplama yapacak fonksiyon. |
ilkDeger | Toplamaya eklenecek herhangi bir tipteki ilk değeri belirler. Belirtilmezse '0' değeri baz alınır. |
Dönüş Değeri
toplamDeger | Toplama fonksiyonu aracılığıyla toplanan değerlerin toplamı herhangi bir tipte döner. |
Toplama Fonksiyonunun Yapısı ve Aktarılan Argümanlar
Array.reduce() fonksiyonuna parametre olarak aktarılarak dizi elemanlarını toplayacak fonksiyonun genel yapısı aşağıdaki gibi olmalıdır. Fonksiyon içeriği isteğe göre hazırlanmasına rağmen sonraki fonksiyona aktarmak için mutlaka return ile herhangi bir değer döndürmelidir. Herhangi bir değer döndürülmediği takdirde sonraki fonksiyona ilkDeger parametresi olarak undefined değeri atanacaktır.
fonk_Reduce(ilkDeger, eleman, sira, arrayRef) {
var sonuc;
// sonuc'u hesapla ...
return sonuc;
}
ilkDeger | Toplamaya eklenecek herhangi bir tipteki ilk değeri belirler. (Bir önceki fonksiyondan elde edilen toplam değerdir.) |
eleman | Dizinin güncel sırasındaki eleman. |
sira | Dizinin güncel sırası. |
arrayRef | Array nesnesinin referansı. |
Aşağıdaki örnek, Array.reduce() fonksiyonu kullanılarak String
içeren bir dizi içindeki tüm String
boylarının toplamanın öğrenilmesini göstermektedir.
<script type="text/javascript">
function fonk_StrTopla(ilkDeger, eleman, sira, arrayRef) {
var topBoyu = ilkDeger + eleman.length;
return topBoyu;
}
function reduce_Test() {
var dizi = ["Ankara", "İstanbul", "İzmir"];
var topStrBoy = dizi.reduce(fonk_StrTopla, 0);
alert(dizi.join(", ") + " kelimeleri, toplam '" + topStrBoy + "' karakter.");
}
</script>
<input type="button" value="Toplam String Boyu" onclick="reduce_Test()" />
Test Edin