Map Sınıfı Nedir? — JavaScript
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ı
- Map nesneleri sadece ona eklenen anahtarları içerir, anahtarlarınızla çakışacak prototip’in den gelen varsayılan anahtarları bulunmaz.
- Objeler sadece
String
veSymbol
veri tiplerinde anahtarlar içerebilirken, Map nesneleri herhangi bir veri tipinde anahtar içerebilir. - 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.
- Map nesnesinin sahip olduğu anahtar sayısı
size
özelliği ile kolaylıkla öğrenilebilir. Objeler için bunu manuel yapmak gerekir. ÖrneğinObject.keys(scores).length
- 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ış özelliklerifor...in
ile yinelenebilir. - 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.