Merhaba sevgili kod kahramanım! 🦸♀️🦸♂️
Bugün sana JavaScript’in o gizli süper gücünü, yani Set objesini anlatacağım. Set, Array gibi görünebilir ama tek ve eşsiz elemanlar konusunda bir şampiyon! 🏆
Bu yazıda hem temel bilgiler, hem pratik ipuçları, hem de yaratıcı örnekler bulacaksın. Hadi başlayalım! 💖
1️⃣ Set Nedir? (Ve Neden Aşık Olmamalısın 😏)
Düşünsene: bir koleksiyonun var ama her elemandan sadece bir tane olsun istiyorsun.
İşte Set tam olarak bu işi yapıyor. Array gibi görünebilir ama tekrar eden değerleri saklamıyor.
const meyveler = new Set();
meyveler.add("elma");
meyveler.add("armut");
meyveler.add("elma"); // 😂 Bu eklenmez, Set tekrarı sevmez
console.log(meyveler); // Set(2) { 'elma', 'armut' }
Açıklama:
new Set()ile boş bir küme oluşturduk.add()ile değer ekledik.- Set, tekrarı asla kabul etmez. Yani “elma”yı ikinci kez eklemeye çalışsak da sadece bir tane kalır.
💡 İpucu: Eğer tekrar eden verileri temizlemek istiyorsan Array’i Set’e çevirip tekrar Array’e dönüştürebilirsin. Bu JS dünyasında mini bir süper güç 😎.
2️⃣ Temel Set Metodları: Set’in Süper Silahları 🛡️
Set’i yönetmek için kullanacağın başlıca metodlar şunlar:
1. add(value) – Eleman Ekleme Büyüsü ✨
const meyveler = new Set();
meyveler.add("elma");
meyveler.add("armut");
meyveler.add("muz");
console.log(meyveler); // Set(3) { 'elma', 'armut', 'muz' }
Açıklama:
add()metodu Set’e yeni bir değer ekler.- Eğer aynı değeri tekrar eklersen, Set onu reddeder.
- Düşünsene, Set bir çeşit sadık dost: “Tekrar edenleri sevmem” 😏
💡 Pratik ipucu: Eğer kullanıcıdan gelen bir listeyi temizlemek istiyorsan, direkt new Set(liste) ile anında tekrarları yok edebilirsin.
2. delete(value) – Artık Git! ✋
meyveler.delete("armut");
console.log(meyveler); // Set(2) { 'elma', 'muz' }
Açıklama:
delete()metodu, belirttiğin değeri Set’ten siler.- Eğer değer Set’te yoksa, hiçbir şey yapmaz.
💡 İpucu: delete() metodunun dönüş değeri boolean’tır. Yani başarılı oldu mu olmadı mı görebilirsin:
console.log(meyveler.delete("elma")); // true
console.log(meyveler.delete("armut")); // false
3. has(value) – Dedektif Modu 🕵️
console.log(meyveler.has("elma")); // true
console.log(meyveler.has("armut")); // false
Açıklama:
has()metodu Set’te belirttiğin değerin olup olmadığını kontrol eder.- Tıpkı gizli bir ajan gibi: “Bu değer burada mı?” 😎
💡 Pratik ipucu: Kullanıcının bir değeri tekrar eklemesini engellemek için has() + add() kombinasyonu süper işe yarar:
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 🔥
meyveler.clear();
console.log(meyveler); // Set(0) {}
Açıklama:
clear()metodu Set’i tamamen boşaltır.- Tüm değerler uçup gider.
- Adeta “artık 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özelliği Set’in kaç elemanı olduğunu gösterir.- Array’de
lengthne ise, Set’tesizeodur.
💡 İpucu: Hızlı tekrar kontrolü için size kullanabilirsin. Örneğin, kullanıcı 5’ten fazla ekleme yapmasın diye sınır koyabilirsin. 😉
3️⃣ Set’i Daha Akıllıca Kullanmak: Sihirli Taktikler ✨
Array’den Set’e Dönüşüm: Tekrarları Temizle!
const nums = [1,2,2,3,3,3];
const uniqueNums = new Set(nums);
console.log(uniqueNums); // Set(3) { 1, 2, 3 }
Açıklama:
- Array’deki tekrar eden değerler otomatik olarak Set ile temizlendi.
💡 Pratik ipucu: Eğer veri tabanından gelen karmaşık listelerde tekrarlar varsa, Set hayat kurtarır!
Set’ten Array’e Dönüşüm: Kodunu Esnek Tut!
const uniqueArray = [...uniqueNums];
console.log(uniqueArray); // [1, 2, 3]
Açıklama:
- Spread operator (
...) ile Set’i tekrar Array’e çevirebilirsin. - Böylece Array metodlarını kullanmaya devam edebilirsin.
4️⃣ Set ile Mini Oyun: Arkadaş Listesi 🥳
Düşünsene bir uygulama yapıyorsun, kullanıcı arkadaş ekliyor ama aynı kişiyi iki kere eklemek istemiyorsun.
Set burada devreye giriyor:
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 😏
5️⃣ Bonus: Set Döngüleri ve İpuçları 🌀
Set üzerinde döngü yapmak çok kolay:
friends.forEach(friend => console.log(`Arkadaş: ${friend}`));
Açıklama:
forEachveyafor...ofile Set’in elemanlarını rahatça dönebilirsin.- Map’ten farkı: Set sadece değerleri saklar, key-value çifti yoktur.
💡 İpucu: Set ile intersection, difference gibi “küme matematiği” de yapabilirsin:
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}
🎉 Ö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
💡 Bonus ipuçları:
- Array → Set = tekrarları temizle
- Set → Array = Array metodlarını kullan
- Intersection & Difference = Küme matematiği yap
