Softmush.com, teknoloji, yazılım ve dijital dünyaya dair derinlemesine içeriklerle bilgiye ulaşmanın güvenilir adresi. - Softmush.com
“ Söz konusu olan vatansa, gerisi teferruat. ”
Mustafa K. Atatürk
JavaScript Dilinde JS Sets Kullanımı

JavaScript Dilinde JS Sets Kullanımı

JavaScript'te Setler, benzersiz değerlerden oluşan bir koleksiyonu depolamak için kullanılan özel bir nesne türüdür.
Bu veri yapısı, tekrar eden öğelerin otomatik olarak elenmesini sağlayarak veri yönetimi ve manipülasyonunda önemli avantajlar sunar.
Bu makale, JavaScript Setlerinin temel kullanımını, sözdizimini ve pratik uygulamalarını detaylı bir şekilde açıklayacaktır.


Sözdizimi


Bir Set oluşturmak için new Set() kurucusu kullanılır.
Değerler, Set'in kurucusuna bir iterable (örneğin bir dizi) olarak geçirilebilir veya daha sonra add() metodu ile eklenebilir.


// Boş bir Set oluşturma
const mySet = new Set();

// Başlangıç değerleri ile Set oluşturma
const initialSet = new Set([1, 2, 3, 2, 4]); // initialSet: {1, 2, 3, 4}

// Metotlar
mySet.add(value);      // Bir değer ekler
mySet.delete(value);   // Bir değeri siler
mySet.has(value);      // Bir değerin varlığını kontrol eder
mySet.clear();         // Set'teki tüm öğeleri siler
mySet.size;            // Set'teki öğe sayısını döndürür

Detaylı Açıklama


  • new Set([iterable]): Yeni bir Set nesnesi oluşturur. İsteğe bağlı olarak, iterable bir nesne (örneğin bir dizi) alabilir. Bu iterable içindeki tüm öğeler Set'e eklenir. Tekrar eden değerler otomatik olarak göz ardı edilir.

  • Set.prototype.add(value): Set'e yeni bir değer ekler. Eğer değer zaten Set'te mevcutsa, Set değişmez. Zincirleme çağrılara izin vermek için Set nesnesini döndürür.

  • Set.prototype.delete(value): Set'ten belirli bir değeri siler. Eğer değer Set'te mevcutsa true, aksi takdirde false döndürür.

  • Set.prototype.has(value): Belirli bir değerin Set'te olup olmadığını kontrol eder. Varsa true, yoksa false döndürür.

  • Set.prototype.clear(): Set'teki tüm öğeleri siler ve Set'i boşaltır.

  • Set.prototype.size: Set'teki benzersiz öğelerin sayısını döndüren bir erişimci özelliğidir.

  • Set.prototype.forEach(callbackFn[, thisArg]): Set'teki her öğe için bir callback fonksiyonu yürütür. Dizilerdeki forEach metoduna benzer.

  • Set.prototype.values(), Set.prototype.keys(), Set.prototype.entries(): Set'teki değerleri, anahtarları (Set'lerde anahtarlar ve değerler aynıdır) veya anahtar/değer çiftlerini ([value, value] formatında) içeren yeni bir Iterator nesnesi döndürür.

Pratik Kullanım Örnekleri


Aşağıdaki örnekler, JavaScript Setlerinin çeşitli kullanım senaryolarını göstermektedir.


1. Benzersiz Öğeleri Toplama


Bir dizideki yinelenen öğeleri kaldırmak ve yalnızca benzersiz değerleri elde etmek için Setleri kullanmak oldukça etkilidir.


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

console.log(uniqueNumbers); // Set(6) {1, 2, 3, 4, 5, 6}

// Set'i tekrar bir diziye dönüştürme
const uniqueNumbersArray = [...uniqueNumbers];
console.log(uniqueNumbersArray); // [1, 2, 3, 4, 5, 6]

2. Öğelerin Varlığını Kontrol Etme


Bir öğenin bir koleksiyonda olup olmadığını hızlıca kontrol etmek için has() metodunu kullanabilirsiniz.


const fruits = new Set(['elma', 'armut', 'muz']);

console.log(fruits.has('elma'));   // true
console.log(fruits.has('çilek'));  // false

fruits.add('çilek');
console.log(fruits.has('çilek'));  // true

3. Set Üzerinde İterasyon


Set öğeleri üzerinde döngü yapmak için forEach() metodunu veya for...of döngüsünü kullanabilirsiniz.


const colors = new Set(['kırmızı', 'mavi', 'yeşil']);

// forEach ile iterasyon
colors.forEach(color => {
    console.log(color);
});
// Çıktı:
// kırmızı
// mavi
// yeşil

// for...of ile iterasyon
for (const color of colors) {
    console.log(color);
}
// Çıktı:
// kırmızı
// mavi
// yeşil

Önemli Notlar


  • Değer Karşılaştırması: Setler, değerleri karşılaştırırken aynı algoritmayı kullanır. Bu, NaN değerlerinin Set içinde benzersiz olarak ele alındığı anlamına gelir (NaN === NaN false olmasına rağmen, Set içinde sadece bir adet NaN bulunabilir). Obje referansları için, farklı referanslara sahip aynı içeriğe sahip objeler farklı kabul edilir.

  • Sırasız Yapı: Setler, öğeleri eklenme sırasına göre depolasa da, Setin birincil amacı benzersiz öğeleri tutmaktır, belirli bir sırayı garanti etmek değildir. Bazı durumlarda iterasyon sırası ekleme sırasına denk gelebilir, ancak buna güvenilmemelidir.

  • Performans: Bir öğenin Set'te varlığını kontrol etmek (has() metodu) genellikle O(1) zaman karmaşıklığına sahiptir, bu da büyük veri kümeleri için dizilerdeki aramalara göre daha verimli olabilir.

  • Zayıf Referanslar: Eğer objeler için zayıf referanslara ihtiyacınız varsa (yani objeye başka referans kalmadığında otomatik olarak belleğin serbest bırakılmasını istiyorsanız), WeakSet kullanmanız gerekebilir. Ancak WeakSet sadece objeleri depolayabilir ve iterable değildir.

  • Anahtar-Değer Çiftleri İçin Setler: Eğer benzersiz anahtar-değer çiftleri depolamanız gerekiyorsa, Map nesnesi daha uygun bir seçenek olabilir.

Yayınlanma Tarihi: 2025-10-16 04:00:40
Matematikte Doğuştan Kötü Olmak Mümkün Mü? Bilimin Işığında Bir Bakış
Önceki Haber

Matematikte Doğuştan Kötü Olmak Mümkün Mü? Bilimin Işığında Bir Bakış

Bilim Makaleleri
Sonraki Haber

SQL Dilinde SQL UPDATE Kullanımı: Veri Güncelleme Rehberi

SQL Makaleleri
SQL Dilinde SQL UPDATE Kullanımı: Veri Güncelleme Rehberi

Yorum yap

Yorum yapabilmek için  giriş  yapmalısınız.

Yorumlar

Bu yazı hakkında henüz yorum yapılmamıştır.
× JavaScript Dilinde Asenkron Programlama: Kapsamlı Bir Kılavuz
Bu ilginizi çekebilir

JavaScript Dilinde Asenkron Programlama: Kapsamlı Bir Kılavuz

JavaScript, doğası gereği tek iş parçacıklı (single-threaded) bir dildir. Bu durum, uzun...