Bu eğiticide, örnekler yardımıyla JavaScript Setleri ve WeakSets hakkında bilgi edineceksiniz.
JavaScript ES6 iki yeni veri yapısı sunmuştur , yani Set
ve WeakSet
.
Küme, sayılar, dizeler, nesneler vb. Gibi birden çok öğeyi saklamamıza izin veren bir diziye benzer. Bununla birlikte, bir dizinin aksine, bir küme yinelenen değerler içeremez.
JavaScript Seti Oluşturun
Bir oluşturmak için yapıcıyı Set
kullanmanız gerekir new Set()
. Örneğin,
// create Set const set1 = new Set(); // an empty set console.log(set1); // Set () // Set with multiple types of value const set2 = new Set((1, 'hello', (count : true))); console.log(set2); // Set (1, "hello", (count: true))
Bir Set
nesneye yinelenen değerler iletildiğinde , yinelenen değerler hariç tutulur.
// Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)
Küme Öğelerine Erişim
Yöntemi Set
kullanarak öğelere erişebilir ve values()
yöntemi Set
kullanarak içinde bir öğe olup olmadığını kontrol edebilirsiniz has()
. Örneğin,
const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)
has()
Öğenin bir Kümede olup olmadığını kontrol etmek için yöntemi kullanabilirsiniz . Örneğin,
const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));
Yeni Öğeler Ekleme
add()
Yöntemi kullanarak bir Set'e öğeler ekleyebilirsiniz . Örneğin,
const set = new Set((1, 2)); console.log(set.values()); // adding new elements set.add(3); console.log(set.values()); // adding duplicate elements // does not add to Set set.add(1); console.log(set.values());
Çıktı
Set Yineleyici (1, 2) Set Yineleyici (1, 2, 3) Set Yineleyici (1, 2, 3)
Elemanların Kaldırılması
Bir Setten öğeleri kaldırmak için clear()
ve delete()
yöntemini kullanabilirsiniz.
delete()
Yöntem, belirli bir öğeyi kaldırır Set
. Örneğin,
const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // removing a particular element set.delete(2); console.log(set.values()); // Set Iterator (1, 3)
clear()
Yöntem, tüm öğeleri kaldırır Set
. Örneğin,
const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // remove all elements of Set set.clear(); console.log(set.values()); // Set Iterator ()
Yineleme Setleri
For… of döngüsünü veya forEach () yöntemini kullanarak Set öğeleri arasında yineleme yapabilirsiniz. Öğelere, ekleme sırasından erişilir. Örneğin,
const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )
Çıktı
1 2 3
JavaScript WeakSet
WeakSet, Kümeye benzer. Ancak WeakSet yalnızca nesneleri içerebilirken, bir Küme dizeler, sayılar, nesneler vb. Gibi herhangi bir veri türünü içerebilir. Örneğin,
const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () let obj = ( message: 'Hi', sendMessage: true ) // adding object (element) to WeakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((message: "Hi", sendMessage: true))
Nesnelerin yanı sıra başka veri türleri eklemeye çalıştığınızda, WeakSet bir hata atar. Örneğin,
// trying to add string to WeakSet weakSet.add('hello'); // throws error // TypeError: Attempted to add a non-object key to a WeakSet console.log(weakSet);
WeakSet Yöntemleri
WeakSets yöntemleri var add()
, delete()
ve has()
. Örneğin,
const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () const obj = (a:1); // add to a weakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((a: 1)) // check if an element is in Set console.log(weakSet.has(obj)); // true // delete elements weakSet.delete(obj); console.log(weakSet); // WeakSet ()
WeakSets yinelenemez
Setlerden farklı olarak WeakSets yinelenemez. Örneğin,
const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )
Matematiksel Küme İşlemleri
JavaScript'te Set, birleşim, kesişim, fark vb. Matematiksel işlemleri gerçekleştirmek için yerleşik yöntemler sağlamaz. Bununla birlikte, bu işlemleri gerçekleştirmek için programlar oluşturabiliriz.
Örnek: Birleştirme İşlemini Ayarlama
// perform union operation // contain elements of both sets function union(a, b) ( let unionSet = new Set(a); for (let i of b) ( unionSet.add(i); ) return unionSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = union(setA, setB); console.log(result);
Çıktı
Set ("elma", "mango", "portakal", "üzüm", "muz")
Örnek: Kavşak İşlemini Ayarlama
// perform intersection operation // elements of set a that are also in set b function intersection(setA, setB) ( let intersectionSet = new Set(); for (let i of setB) ( if (setA.has(i)) ( intersectionSet.add(i); ) ) return intersectionSet; ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = intersection(setA, setB); console.log(result);
Çıktı
Ayarla ("elma")
Örnek: Fark İşlemini Ayarlama
// perform difference operation // elements of set a that are not in set b function difference(setA, setB) ( let differenceSet = new Set(setA) for (let i of setB) ( differenceSet.delete(i) ) return differenceSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = difference(setA, setB); console.log(result);
Çıktı
Set ("mango", "turuncu")
Örnek: Alt Küme İşlemini Ayarlama
// perform subset operation // true if all elements of set b is in set a function subset(setA, setB) ( for (let i of setB) ( if (!setA.has(i)) ( return false ) ) return true ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('apple', 'orange')); let result = subset(setA, setB); console.log(result);
Çıktı
doğru
JavaScript Sets
ve ES6'daWeakSets
tanıtıldı . Bazı tarayıcılar bunların kullanımını desteklemeyebilir. Daha fazla bilgi edinmek için JavaScript Kümeleri desteğini ve JavaScript WeakSets desteğini ziyaret edin.