💎 Tekrar Etmeyen Koleksiyonlar ile Mini Sihirli Oyunlar (JS Set Edition 🧙‍♂️)

💎 Tekrar Etmeyen Koleksiyonlar ile Mini Sihirli Oyunlar (JS Set Edition 🧙‍♂️)

Merhaba sevgili kod kahramanım! 🦸‍♀️🦸‍♂️
Bugün sana JavaScript’in gizli süper gücü Set’i anlatacağım. Ama bunu sıkıcı bir ders gibi değil, mini sihirli oyunlarla, pratik ipuçlarıyla ve eğlenceli örneklerle yapacağız 😎


1️⃣ Set Nedir? (Ve Neden Büyülü 😏)

Düşünsene: Elinde bir sihirli kutu var ve içine sadece tekil objeler girebilir.
Set tam olarak bu işi yapıyor! Array gibi görünebilir ama aynı değeri iki kez saklamaz.

// Boş bir Set oluşturuyoruz
const meyveler = new Set();

// Set’e eleman ekleme
meyveler.add("elma");
meyveler.add("armut");
meyveler.add("elma"); // 😂 eklenmez, Set tekrarları sevmez

console.log(meyveler); // Set(2) { 'elma', 'armut' }

Açıklama:

  • new Set() ile boş bir kutu (Set) oluşturduk.
  • add() ile eleman ekledik.
  • İkinci “elma” eklenmedi çünkü Set tekrarı asla kabul etmez 💖

💡 Pratik ipucu: Eğer bir Array’in tekrar eden değerlerini temizlemek istiyorsan:

const numbers = [1,2,2,3,3,3];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3]

Mini sihir gibi, değil mi 😎✨


2️⃣ Set’in Temel Metodları: Süper Silahlar 🛡️

Set’i yönetmek için kullanacağın başlıca metodlar:


1. add(value) – Sihirli Ekleme ✨

const oyunKarakterleri = new Set();
oyunKarakterleri.add("Mario");
oyunKarakterleri.add("Luigi");
oyunKarakterleri.add("Mario"); // tekrar eklenmez

console.log(oyunKarakterleri); // Set(2) { 'Mario', 'Luigi' }

Açıklama:

  • add() bir eleman ekler.
  • Eğer eleman zaten varsa, Set onu reddeder.
  • Set, tıpkı sadık bir dost gibi: “Tekrar edenleri kabul etmem!” 😏

💡 Pratik ipucu: Kullanıcıdan gelen listeyi temizlemek için new Set(liste) hızlı bir çözüm.


2. delete(value) – Git Artık! ✋

oyunKarakterleri.delete("Luigi");
console.log(oyunKarakterleri); // Set(1) { 'Mario' }

Açıklama:

  • delete() belirtilen elemanı Set’ten siler.
  • Eğer eleman yoksa, hiçbir şey yapmaz.

💡 İpucu: delete() boolean döndürür, başarılı oldu mu olmadı mı kontrol edebilirsin:

console.log(oyunKarakterleri.delete("Mario")); // true
console.log(oyunKarakterleri.delete("Luigi")); // false


3. has(value) – Dedektif Modu 🕵️

console.log(oyunKarakterleri.has("Mario")); // true
console.log(oyunKarakterleri.has("Luigi")); // false

Açıklama:

  • has() elemanın Set’te olup olmadığını kontrol eder.
  • Gizli ajan gibi: “Bu değer burada mı?” 😎

💡 Pratik ipucu: has() + add() kombinasyonu ile kullanıcıların tekrar eklemesini önleyebilirsin:

const friends = new Set();
function addFriend(name) {
    if (!friends.has(name)) {
        friends.add(name);
        console.log(`${name} eklendi! 🎉`);
    } else {
        console.log(`${name} zaten var, tekrar ekleyemezsin! 😏`);
    }
}
addFriend("Ahmet");
addFriend("Ahmet");


4. clear() – Reset Butonu 🔥

friends.clear();
console.log(friends); // Set(0) {}

Açıklama:

  • clear() Set’i tamamen boşaltır.
  • Tüm değerler uçup gider, adeta eski defterleri kapatma zamanı 😂

5. size – Set’in Boyutu 📏

const sayilar = new Set([1,2,3,3,4]);
console.log(sayilar.size); // 4

Açıklama:

  • size Set’te kaç eleman olduğunu gösterir.
  • Array’de length neyse, Set’te size odur.

💡 Pratik ipucu: Kullanıcıya sınırlama koymak için kullanabilirsin. Örneğin, 5’ten fazla ekleme olmasın 😏


3️⃣ Mini Sihirli Oyun 1: Arkadaş Listesi 🥳

Uygulama yapıyoruz, kullanıcı arkadaş ekliyor ama aynı kişiyi iki kez eklemek istemiyoruz.

const friends = new Set();

friends.add("Ahmet");
friends.add("Ayşe");
friends.add("Ahmet"); // tekrar eklenmez

for (let friend of friends) {
  console.log(friend); // Ahmet, Ayşe
}

💖 Set, ilişkiler gibi: sadık ve tekrarı kabul etmez 😏


4️⃣ Mini Sihirli Oyun 2: Rastgele Hediye Dağıtımı 🎁

Bir partide herkes bir hediye alacak ama aynı hediyeyi iki kez vermek istemiyoruz.

const gifts = ["teddy", "chocolate", "book", "pen"];
const givenGifts = new Set();

while (givenGifts.size < 3) {
    const randomGift = gifts[Math.floor(Math.random() * gifts.length)];
    givenGifts.add(randomGift);
}

console.log(givenGifts); // 3 farklı hediye

Açıklama:

  • Math.random() ile rastgele eleman seçiyoruz.
  • Set sayesinde tekrar eden hediyeler eklenmiyor ✨

💡 İpucu: size ile kaç farklı eleman eklediğini takip edebilirsin.


5️⃣ Mini Sihirli Oyun 3: Kesişim ve Fark 🌀

Set ile küme matematiği yapabiliriz 😎

const setA = new Set([1,2,3,4]);
const setB = new Set([3,4,5,6]);

// Kesişim
const intersection = new Set([...setA].filter(x => setB.has(x)));
console.log(intersection); // Set(2) {3, 4}

// Fark
const difference = new Set([...setA].filter(x => !setB.has(x)));
console.log(difference); // Set(2) {1, 2}

Açıklama:

  • Kesişim = Ortak elemanlar
  • Fark = Sadece bir kümede olanlar
  • Set, tıpkı bir sihirbaz gibi tekil değerleri yönetir 🧙‍♂️

💡 Pratik ipucu: Bu yöntemle kullanıcı seçimlerini filtreleyebilir veya benzersiz veri kümeleri oluşturabilirsin.


6️⃣ Bonus: Set → Array ve Array → Set 🔄

const nums = [1,2,2,3,3,3];
const uniqueNums = [...new Set(nums)]; // Array’den Set → tekrar temizlendi
console.log(uniqueNums); // [1, 2, 3]

💡 Pratik ipucu: Set ile tekrarları temizledikten sonra Array metodlarını kullanmaya devam edebilirsin: map(), filter(), reduce() gibi 😎


🎉 Özet

  • Set = Tekrar etmeyen koleksiyon 💎
  • add() = Eleman ekle
  • delete() = Elemanı sil
  • has() = Var mı diye kontrol et
  • clear() = Tümünü sil
  • size = Set’in boyutu

💖 Mini oyunlar ile gördüğümüz gibi: Set sadece veriyi saklamakla kalmaz, koduna eğlence ve sihir katar

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