Set & Map (ES6)

Set & Map (ES6): Array → Set Tekilleştirme + Map Anahtar-Değer Haritası ES6 ile gelen Set ve Map yapıları, düz dizilerin ve nesnelerin yetersiz kaldığı durumlarda devreye girer.

Array → Set Tekilleştirme + Map Anahtar-Değer Haritası

ES6 ile gelen Set ve Map yapıları, düz dizilerin ve nesnelerin yetersiz kaldığı durumlarda devreye girer. Set, benzersiz (unique) değerlerin koleksiyonudur — tekrar eleman kabul etmez. Map ise anahtarların herhangi bir tip olabildiği (sadece string değil) gelişmiş bir anahtar-değer deposudur. Java'daki HashSet ve HashMap'in doğrudan karşılığıdır. Set'i bir davetli listesindeki isim etiketleri gibi düşün: aynı ismi ikinci kez yazmaya çalıştığında liste onu sessizce yutar; Map ise vestiyer fişidir — verdiğin fiş ne olursa olsun (sayı, nesne, hatta bir fonksiyon) karşılığındaki paltoyu getirir. Peki düz bir dizi ve düz bir nesne varken bu iki yapıya neden ihtiyaç var? İki somut sebep: birincisi, düz bir nesnede anahtarlar HER ZAMAN string'e çevrilir — `obj[1]` ile `obj['1']` aynı kutuyu gösterir; ikincisi, bir dizide tekrar aramak `includes()` ile her seferinde baştan tarama demektir, `Set.has()` ise sabit sürede döner. Java'da `HashSet` ile `ArrayList.contains()` arasında öğrendiğin takas burada birebir aynıdır. QA açısından en pratik kullanım tekrar tespitidir: bir listedeki sipariş numaralarını Set'e atıp boyutunu orijinal uzunlukla karşılaştırmak, 'aynı kayıt iki kez oluşturuluyor mu' sorusunu tek satırda cevaplar — ki bu, ödeme ve kayıt akışlarında en pahalı bug sınıflarından biridir.

Set & Map — QA Otomasyon Örnekleri

// ─── SET ───────────────────────────────────────────────────── // Java'da: Set set = new HashSet<>(); const errorSet = new Set(); errorSet.add("ElementNotFound"); errorSet.add("TimeoutError"); errorSet.add("ElementNotFound"); // Tekrar — eklenmez! console.log("Hata sayısı:", errorSet.size); // 2 (tekrar yok) console.log("Set içerir mi?", errorSet.has("TimeoutError")); // true // Diziyi tekilleştirme (Set'in en yaygın kullanımı) const rawLogs = ["INFO", "ERROR", "INFO", "WARN", "ERROR"]; const uniqueLogs = [...new Set(rawLogs)]; console.log("Tekil loglar:", uniqueLogs); // ['INFO','ERROR','WARN'] // ─── MAP ───────────────────────────────────────────────────── // Java'da: Map map = new HashMap<>(); const statusMap = new Map(); statusMap.set('/api/login', 200); statusMap.set('/api/logout', 200); statusMap.set('/api/admin', 403); console.log("Login status:", statusMap.get('/api/login')); // 200 console.log("Toplam route:", statusMap.size); // 3 // Map üzerinde döngü (Java: entrySet().forEach()) for (const [url, status] of statusMap) { const icon = status === 200 ? '✅' : '❌'; console.log(`${icon} ${url} → ${status}`); }

Micro Lab: JavaScript QA kod yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Adim Adim: JavaScript QA kod yazma

Amaci ve asenkron bagimliliklari oku

await / Promise zincirini dogru yere yerlestir

assertion veya beklenti satirini tamamla

Kodu calistirip console veya test ciktisini oku

Flaky olursa bekleme stratejisi veya retry ekle

JavaScript QA kodunu guvenli yazma ve test etme sirasi nedir?

🎬 Bir Set Tekrarları Nasıl Yutar, Bir Map Sırayı Nasıl Korur?