Map Sınıfı Nedir? — JavaScript

Aykut Kardaş
3 min readJan 19, 2021

--

Photo by Rich Tervet on Unsplash

Map anahtar ve değer ikilisini tutan ve değerlerin eklenme sırasını hatırlayan bir JavaScript nesnesidir. Normal bir nesneden farklı olarak anahtar için herhangi bir veri tipi kullanılabilir. String ile sınırlı değildir.

Anahtarların aynı olup olmadığı kontrol etmek için sameValueZero algoritmasını kullanır. Bu algoritma eşitlik kontrolüne benzer fakat +0 ile -0 aynı kabul edilir. Ayrıca NaN ve NaN bu algoritmaya göre aynı şeydir.

sameValueZero algoritmasını daha iyi anlamak için şu dokümanı inceleyebilirsiniz.

Map nesnesinin kullanımını ve avantajlarını bir örnek ile ele alalım.

Map nesnesine yeni bir değer eklemek için set metodu kullanılır. İlk parametre anahtar ikinci parametre değerdir.

Bir anahtarın değerini almak için get metodu kullanılır.

Anahtarın Map nesnesinde olup olmadığını kontrol etmek için has metodu bulunur.

Bir Map nesnesinin kaç anahtar tuttuğunu öğrenmek için size özelliğine bakarız.

Bir anahtarı silmek için delete metodu kullanılır. Bu metot bir anahtarı sildiğinde true döndürür. Olmayan bir anahtarı silmeye çalıştığınızda false değerini döndürür.

Farklı veri tiplerinde anahtarlara sahip olmaya bir örnek.

Bir objeden Map nesnesi üretmek için Object.entries metodu kullanılır. Çünkü Map nesnesi parametre olarak [anahtar, değer] şeklinde dizilerden oluşmuş bir dizi kabul eder.

Yukarıdaki örnek şununla aynıdır.

Object ve Map Karşılaştırması

  1. Map nesneleri sadece ona eklenen anahtarları içerir, anahtarlarınızla çakışacak prototip’in den gelen varsayılan anahtarları bulunmaz.
  2. Objeler sadece String ve Symbol veri tiplerinde anahtarlar içerebilirken, Map nesneleri herhangi bir veri tipinde anahtar içerebilir.
  3. Map nesnelerinde anahtarlar eklenme sıralarını korurlar. Objeler için bu hep böyle değildi ve bu sıraya güvenmemek daha iyidir.
  4. Map nesnesinin sahip olduğu anahtar sayısı size özelliği ile kolaylıkla öğrenilebilir. Objeler için bunu manuel yapmak gerekir. Örneğin Object.keys(scores).length
  5. Bir Map nesnesi iterable bir değerdir. Objeler üzerinde bunu yapmak için Object.keys, Object.entries gibi metotlar kullanılır ya da objenin numaralandırılmış özellikleri for...in ile yinelenebilir.
  6. Performans konusunda anahtar değer çiflerinin eklenme sıklığına göre Map nesnesi daha performanslıdır. Bir obje bunun için bir optimizasyon içermez.

Happy Coding!

JavaScript’in Built-in Nesneleri hakkında daha fazla bilgi almak ve katkıda bulunmak için şu repoya göz atabilirsiniz.

--

--