Yücel Alkan

JavaScript Array Map Kullanımı

Merhabalar. Bu yazımda JavaScript'te array yani diziler için kullanılan map fonksiyonundan bahsedeceğim. Array Map fonksiyonu, kendisine parametre olarak gönderilen dizinin her bir elemanını belirlenen bir işleme tabi tutup, yeni bir dizi meydana getirir. Örneğin; elimizdeki dizinin tüm elemanlarının beş katını almak istediğimiz zaman kullanabiliriz. 

Burada belirtmem gereken önemli bir husus var; Array Map fonksiyonu, kendisine parametre olarak gönderilen diziye herhangi bir müdahalede bulunmaz. O dizinin her elemanını belli bir işleme tabi tutarak yeni bir dizi meydana getirir.

Öncelikle Array Map fonksiyonunun kullanımına bir göz atalım.

array.map( function(value, index, arr), this)

Bu yazımda geçen ifadele göz atalım;

  • array : Üzerinde işlem yapılacak olan diziyi belirtir. Bu dizinin her bir elemanı map fonksiyonu içinde belirleyeceğimiz işleme tabi tutulacaktır. 
  • value : O anda üzerinde işlem yapılan dizi değerini belirtir. 
  • arr : Üzerinde işlem yapılan diziye erişim için kullanılır.
  • this : Opsiyoneldir. this değişkenine iletilecek olan değeri belirtir. 

Örnek 1: İlk örneğimizi yukarıda bahsettiğim olay üzerinden gerçekleştirelim. Bir dizinin tüm elemanlarını 5 ile çarpan fonksiyonu yazalım. 

var sayilar = [1, 4, 5, 8, 10];

var yeniDizi = sayilar.map(function(deger){
    return deger * 5;
})

console.log(yeniDizi.toString());    // Çıktı : 5,20,25,40,50

Örnekte, sayilar dizisinde 1,4,5,8,10 değerleri vardı. Oluşturduğum Array Map ile yeniDizi dizisini, sayilar dizisinin elemanlarının 5 katı ile elde ettim. Yani console.log() ifadesi ekrana 5,20,25,40,50 değerlerini yazdıracaktır. Yeri gelmişken hatırlatayım, toString fonksiyonu, dizi elemanlarını araya virgül koyarak döndürür. 

Örnek 2: Elimizde, işçilerin aldıkları maaşlara ait bir dizi olsun. Maaşı 2500 TL'nin üzerinde olanlarınkine %5, altında olanlarınkine de %10 zam yapan bir array map oluşturalım.

var maaslar = [ 2750, 3250, 2400, 2200, 2600, 4000, 2100 ];
var yeniMaaslar = maaslar.map(function(deger){
    if(deger > 2500)
        return deger * 1.05;
    else
        return deger * 1.10;
});

console.log( yeniMaaslar.toString() );

// Çıktısı : 2887.5,3412.5,2640,2420,2730,4200,2310

Örnekte de görüldüğü üzere, Array Map fonksiyonu içinde dilediğiniz JavaScript işlemini yapabilirsiniz. Ancak herhangi bir değeri return etmeyi unutmayın. Buraya da küçük bir not düşelim; bir sayıyı 1.05 ile çarpmak aslında o sayıya kendisinin yüzde 5'i kadarını eklemek demektir. Tabi aynı durum 1.10 ile çarpmak için de geçerlidir. 

Örnek 3: Şu ana kadar yaptığımız örneklerde parametrelerden sadece dizi değeri döndüreni kullandık. Bu örneğimizde index kullanımına da değinelim. Aşağıdaki örnekte, bazı sayıların karesi, bazılarının ise küpünün alınması istenmiştir.

Karesi istenen sayıların indekslerine bir bakalım. Biliyorsunuz, dizilerin indeks numaraları 0'dan başları. Bu  yüzden karesi istenen sayıların indeksleri: 0, 2 ve 4'tür.

Küpü istenen sayıların indeksleri ise 1,3 ve 5'tir. Aslında soru diyor ki; indeksi çift olan sayıların karesini, tek olan sayıların da küpünü al. Problemi tespit etmek çözmenin yarısıdır derler, gerçekten de öyle. O zaman çözüme geçelim.

JavaScript Array Map

var sayilar = [2, 4, 5, 7, 8, 9];
var yeni = sayilar.map(function(deger,indeks){
    if(indeks % 2 == 0)
        return Math.pow(deger,2);
    else
        return Math.pow(deger,3);
});

console.log(yeni.toString());

// Çıktısı : 4,64,25,343,64,729

Konunun daha iyi anlaşılabilmesi için hep matematiksel işlemler üzerinden örnekler verdik ama dilediğiniz işlemleri Array Map ile yapmanız mümkün. 

Soru, görüş ve önerilerinizi yorum olarak belirtebilirsiniz. Hayırlı çalışmalar dilerim.

Yorumlar
Hakan Bağlan (29 Ekim 2021 - 21:23)
Gerçekten çok güzel anlatmışsınız Allah razı olsun.
Cevapla
emin (22 Aralık 2021 - 13:07)
Cok verimli oldu, tesekkür ederim
Cevapla
Vedat (19 Mart 2022 - 22:49)
Map uygulaması ile ilgili ingilizce içerikleri biraz okudum ama karmaşık geldi. Bir de türkçe içeriklere bakayım dedim. Güzel anlatmışsınız. Biraz pratik yapayım. Teşekkürler paylaşım için.
Cevapla
Mehmet Ağkuş (08 Ağustos 2022 - 21:51)
Teşekkürler başarılı olmuş ancak arr ve this keywordlerinin ne işe yaradığı da örneklerle açıklansa daha iyi olurmuş
Cevapla
Kanımay Colçu kızı (25 Kasım 2023 - 05:34)
Çok anlaşılır olmuş teşekkür ederim
Cevapla
Mehmet (29 Mart 2024 - 09:27)
this kullanımı ile ilgili de bir örnek olsaydı keşke
Cevapla
Yorum Yapın