🗺️ JavaScript Maps: Güçlü Veri Yapıları ile Tanışın (Ama Gerçekten Tanışın 😎)

🗺️ JavaScript Maps: Güçlü Veri Yapıları ile Tanışın (Ama Gerçekten Tanışın 😎)

Merhaba💖
Bugün JavaScript evreninde “Ben object değilim, ben Map’im” diye gezen karizmatik bir veri yapısıyla derin, samimi ve bol kahkahalı bir tanışma yaşayacağız.

Bu yazı kısa kısa geçip gitmeyecek.
Bu yazı:

  • bol örnekli 🧪
  • gerçek hayattan benzetmeli 🧠
  • pratik ipuçlarıyla dolu 🛠️
  • “Hah işte şimdi oturdu!” dedirten 💡

Bir yazı olacak.
Hazırsan… Map’i sahneye alıyoruz 🎤


🤔 JavaScript Map Nedir? (Object’ten Farkı Ne?)

JavaScript’te çoğu kişi veriyi saklamak için otomatik olarak Object kullanır.
Ama Map diyor ki:

“Ben bu işi biraz daha premium yapıyorum.” 😌

Map, anahtar–değer (key–value) mantığıyla çalışan ama bunu daha net, daha esnek ve daha performanslı yapan bir veri yapısıdır.

🔑 En büyük fark ne?

Map’te key olarak HER ŞEYİ kullanabilirsin:

  • string
  • number
  • boolean
  • object
  • array
  • function

Object’te ise genelde işler string key’lere sıkışır.


🛠️ Map Nasıl Oluşturulur?

Başlangıç çok sade:

const myMap = new Map();

Bu satır ne yapıyor?

  • Yeni bir Map oluşturuyor
  • İçinde şimdilik hiçbir şey yok
  • Tertemiz bir defter gibi 📓

İstersen başlangıçta veriyle de oluşturabilirsin:

const userMap = new Map([
  ["name", "Cansu"],
  ["age", 25],
  ["isDeveloper", true]
]);

📌 Burada her satır bir [key, value] çifti.
Map diyor ki: “Düzenli gelin lütfen.” 😌


➕ Veri Ekleme: set()

Map’in en sevdiği kelime: set 💅

myMap.set("city", "İstanbul");
myMap.set(34, "Plaka");
myMap.set(true, "Evet, bu da key olabilir");

Bu kod ne anlatıyor?

  • set(key, value) → veri ekler
  • Key eşsizdir (aynı key tekrar eklenirse üstüne yazar)
  • Veri tipi umursamaz, Map özgür ruhludur 🕊️

🔥 İpucu:

myMap.set("a", 1).set("b", 2).set("c", 3);

Evet… zincirleme kullanabilirsin 😎


🔍 Veri Okuma: get()

Ne eklediysek geri almak isteriz. Map kırmaz 💖

myMap.get("city"); // "İstanbul"
myMap.get(34);      // "Plaka"

Bulamazsa?

myMap.get("country"); // undefined

Trip atmaz, hata fırlatmaz.
Sessizce “yok” der 😌


❓ Key Var mı? has()

Bir key var mı yok mu öğrenmek istiyorsan:

myMap.has("city"); // true
myMap.has("country"); // false

🧠 Gerçek hayat benzetmesi:
“Bu dolapta çikolata var mı?” 🍫


❌ Veri Silme: delete()

Hayatından çıkardığın şeyler gibi…
Map’ten de çıkarabilirsin 😌

myMap.delete(34);

Bulursa siler, bulamazsa sessizce geçer.
Drama yok.


🧹 Her Şeyi Silmek: clear()

“Yeni bir başlangıç istiyorum” diyenlere:

myMap.clear();

Map tertemiz.
Yeni sayfa, yeni umutlar ✨


📏 Map’in Boyutu: size

Object’te yaşanan o meşhur çile:

Object.keys(obj).length;

Map buna bakıp sadece şunu der:

myMap.size;

Bu kadar.
Minimalizm ✨


🔁 Map Üzerinde Dolaşmak (Iteration)

forEach ile:

myMap.forEach((value, key) => {
  console.log(key, value);
});

📌 Sıra bozulmaz.
📌 Eklediğin sırayla dolaşır.
📌 Kontrol sende 😎


for…of ile (En Havalı Yöntem)

for (const [key, value] of myMap) {
  console.log(key, value);
}

Bu yapı Map’le doğuştan uyumludur.
Okunur, temiz, şık 💅


🧠 Object Key’leri Map’te Kullanmak (İşte Olay Burada)

const user = { id: 1 };
const settings = new Map();

settings.set(user, "Admin");

👉 Aynı object = aynı key
👉 Object’te bunu yapamazsın

Bu özellik Map’i efsane yapar 💥


🆚 Map vs Object (Gerçekçi Karşılaştırma)

ÖzellikMapObject
Key tipiHer şeyString ağırlıklı
SıraKorurGaranti değil
Boyut.sizeUğraştırır
IterationÇok temizEkstra işler
Performans🔥🤷‍♀️

🎯 Ne Zaman Map Kullanmalısın?

✔ Key olarak object / function kullanacaksan
✔ Sıra önemliyse
✔ Çok ekleme–silme yapıyorsan
✔ Kodunun daha okunur olmasını istiyorsan

👉 Map doğru seçimdir💖


💡 Mini Pratik İpuçları

✨ Map JSON’a direkt çevrilmez (önce array yap)
✨ Map referansları sever, primitive’leri net ister
new Map(existingMap) ile kopya alabilirsin


❤️ Sonuç: Map = JavaScript’te Seviye Atlama

Map kullanmaya başladığında şunu hissedeceksin:

“Ben artık rastgele kod yazmıyorum… bilinçliyim.” 😎

Daha temiz kod
Daha az bug
Daha çok huzur 🌿


Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir