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:
sizeSet’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 ✨

