Yükleniyor...

Map ve Set

Map içinde içecek konuğun altında durur. Set ekstraları toplar ve her ekstrayı bir kez tutar. lida önce tea olur, sonra içecek mint ile değişir. Kümeye mint ve lemon girer. Sayfadaki satır lida / mint / 2 diye okunur.

Sıkı kip sayfası başka yerde kaldı

Orada tanımsız bir ad ReferenceError fırlatmıştı. Burada hiçbir şey fırlamaz. Olmayan anahtarda get sonucu undefined olur.

Aynı anahtar içeceği değiştirir

orders.set("lida", "tea") ilk içeceği koyar. orders.set("lida", "mint") ikinci bir satır açmaz; o anahtarın değeri üzerine yazılır. size anahtarları sayar, set kaç kez çağrıldıysa onu saymaz.

Bir içeceği değiştirmek

javascript
const orders = new Map();
orders.set("lida", "tea");
orders.set("lida", "mint");
console.log(orders.get("lida"));
console.log(orders.size);

Günlükte önce mint, sonra 1 görünür. nima hiç konmadığı için orders.get("nima") undefined olur. orders.has("lida") true olur. Harita get ile okunur. orders.lida ve orders["lida"] sıradan nesne yazımıdır, bu haritayı okumaz.

Anahtar nesnenin kendisidir

Haritanın anahtarı bir nesne olabilir. Saklanan o nesnedir, alanlarından üretilmiş bir metin değil. Aynı alanlara sahip başka bir nesne ayrı anahtardır.

Nesne anahtarları ayrı kalır

javascript
const cup = { guest: "lida" };
const other = { guest: "lida" };
const orders = new Map();
orders.set(cup, "tea");
console.log(orders.get(cup));
console.log(orders.get(other));
console.log(orders.size);

Günlük tea, ardından undefined, ardından 1 yazar. Düz bir nesne iki anahtarı da "[object Object]" metnine çevirir, ikinci yazma birincinin yerine geçer. Map bunu yapmaz.

İkinci mint kalmaz

add("mint") iki kez çağrılsa da tek mint kalır. lemon ikinci değerdir, bu yüzden size 2 olur. has evet ya da hayır der. Değeri döndürmez.

Ekler tekrarsız

javascript
const extras = new Set();
extras.add("mint");
extras.add("mint");
extras.add("lemon");
console.log(extras.size);
console.log(extras.has("lemon"));

Günlük 2, sonra true yazar. new Set(["mint", "mint", "lemon"]) aynı kümeyi kurar: mint kopyası çoktan düşmüştür. Kümede yalnız değerler vardır. Bir konuğun altına içecek konmaz.

delete tek girdiyi çıkarır

Bir şey sildiyse delete true döner. Değer yoksa false döner ve küme olduğu gibi kalır.

lemon silmek

javascript
const extras = new Set(["mint", "lemon"]);
console.log(extras.delete("lemon"));
console.log(extras.size);
console.log(extras.has("lemon"));

Günlük true, sonra 1, sonra false yazar. mint duruyor. Map üzerinde de delete ve has vardır, ama anahtarla çalışırlar: orders.delete("lida") o konuğu çıkarır.

Sayfanın yazdığı satır

lida içeceği değiştirilir, küme üç sözcükten kurulur, sonra konuk, içecek ve size yazılır.

Sayfa — Map ve Set

html
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const orders = new Map();
orders.set("lida", "tea");
orders.set("lida", "mint");
const extras = new Set(["mint", "mint", "lemon"]);
const line = document.querySelector("#line");
line.textContent = "lida / " + orders.get("lida") + " / " + extras.size;
</script>
</body>
</html>

Satır lida / mint / 2 diye okunur. tea yazan ilk set görünmez. Yinelenen mint size değerini yükseltmez. ReferenceError sıkı kip satırıydı.

Tezgâhta beş adım

  1. lida önce tea, sonra mint olsun. get("lida") mint olur, size 1 kalır.
  2. tea değerini cup altına koy. get(other) undefined olur, size 1 kalır.
  3. mint, yine mint, sonra lemon ekle. size 2 olur, has("lemon") true olur.
  4. lemon sil. size 1 olur, has("lemon") false olur.
  5. Sayfayı oku. Satır lida / mint / 2 olur.

Kolay karışanlar ve akılda kalacaklar

Aynı anahtara ikinci set bir güncellemedir. Aynı ekstranın ikinci add çağrısı yok sayılır.

  • Haritayı orders["lida"] ile okuma
  • Birbirine benzeyen iki nesne tek anahtar değildir
  • has içeceği döndürmez
  • new Set kopyaları baştan düşürür
  • Satırı ReferenceError diye okuma

Kalsın

  • set değiştirir, size yerinde kalır
  • nesne anahtarları nesnelerin kendisidir
  • küme her değeri bir kez tutar
  • delete bir girdiyi çıkarır
  • sayfa satırı lida / mint / 2 olur

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
4
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek