Onur Dayıbaşı

CV
none

JS Map ?

Object bize yetiyordu, Neden Map tipine ihtiyaç duyduk ?

Javascript’de Enhanced Object Literals yazısında Object kavramlarını anlatmıştım. Object tanımlamak oldukça basit ve Key/Value şeklinde istediğimiz map veri yapısını oluşturabiliyoruz. Peki neden Object yerine Map veri tipine ihtiyaç duyduk. Object yapamadıkları neydi ?

  • Object key değeri olarak sadece String/Symbol verilebiliyor.
  • Object elemanlarını iterate(gezmek) için for…in yöntemini kullanıyoruz. Diğer bir yöntem Object.keys, Object.values or Object.entries metodlar üzerinden gezinmek
  • Object elemanlarına sıra ile erişme sorunu.
  • Değer var mı yok mu için undefined ile kontrol ediyorduk.
  • Set ve Get direk objeye array gibi davranarak veya . ulaşıyorduk.
  • Obje elemanlarının sayısı için fonksiyon yazmamız gerekiyordu.
1Object.size = function(obj) {
2 var size = 0, key;
3 for (key in obj) {
4 if (obj.hasOwnProperty(key)) size++;
5 }
6 return size;
7};

Yukarıdan da anlaşılacağı gibi Object map gibi kullanma imkanımız da olsa bir Veri Yapısı API ihtiyaç duyuyordu geliştiriciler. Map API incelediğimizde;

1new Map() =>constructor
2get(key) => key karşılığındaki value getiren fonksiyon. Burda key istenen tür olabiliyor. Rakam, Obj etc...
3has(key) => key değeri var?
4set(key,value) => key karşılığındaki value atanan fonksiyon. Burda key istenen tür olabiliyor. Rakam, Obj etc...
5size => eleman sayısı
6delete(key) => key olan veriyi map siler
7clear() => tüm keyleri ve veriyi siler
8keys(), values(), entries() => ilgili türleri array olarak döndürür.
9for (let pair of mapObj) { //Loop
10 var [key, value] = pair;
11 console.log(key + " = " + value);
12}

Referanslar