JavaScript Set e WeakSet

In questo tutorial imparerai a conoscere i set JavaScript e i set deboli con l'aiuto di esempi.

JavaScript ES6 ha introdotto due nuove strutture dati, ovvero Sete WeakSet.

Set è simile a un array che ci consente di memorizzare più elementi come numeri, stringhe, oggetti, ecc. Tuttavia, a differenza di un array, un set non può contenere valori duplicati.

Crea set JavaScript

Per creare un Set, è necessario utilizzare il new Set()costruttore. Per esempio,

 // 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))

Quando i valori duplicati vengono passati a un Setoggetto, i valori duplicati vengono esclusi.

 // Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)

Accesso agli elementi del set

Puoi accedere agli Setelementi usando il values()metodo e controllare se c'è un elemento all'interno Setusando il has()metodo. Per esempio,

 const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)

È possibile utilizzare il has()metodo per verificare se l'elemento è in un Set. Per esempio,

 const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));

Aggiunta di nuovi elementi

Puoi aggiungere elementi a un Set usando il add()metodo. Per esempio,

 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());

Produzione

 Set Iterator (1, 2) Set Iterator (1, 2, 3) Set Iterator (1, 2, 3)

Rimozione di elementi

È possibile utilizzare clear()e il delete()metodo per rimuovere elementi da un Set.

Il delete()metodo rimuove un elemento specifico da un file Set. Per esempio,

 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)

Il clear()metodo rimuove tutti gli elementi da un file Set. Per esempio,

 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 ()

Iterate Sets

È possibile scorrere gli elementi Set utilizzando il ciclo for… of o il metodo forEach (). Si accede agli elementi nell'ordine di inserimento. Per esempio,

 const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )

Produzione

 1 2 3

JavaScript WeakSet

Il WeakSet è simile a un Set. Tuttavia, WeakSet può contenere solo oggetti mentre un Set può contenere qualsiasi tipo di dati come stringhe, numeri, oggetti, ecc. Ad esempio,

 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))

Quando si tenta di aggiungere altri tipi di dati oltre agli oggetti, WeakSet genera un errore. Per esempio,

 // 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);

Metodi WeakSet

WeakSets hanno metodi add(), delete()e has(). Per esempio,

 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 ()

I set deboli non sono iterabili

A differenza dei set, i WeakSet non sono iterabili. Per esempio,

 const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )

Operazioni matematiche sugli insiemi

In JavaScript, Set non fornisce metodi incorporati per eseguire operazioni matematiche come unione, intersezione, differenza, ecc. Tuttavia, possiamo creare programmi per eseguire tali operazioni.

Esempio: Imposta operazione unione

 // 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);

Produzione

 Set ("mela", "mango", "arancia", "uva", "banana")

Esempio: impostare l'operazione di intersezione

 // 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);

Produzione

 Set ("mela")

Esempio: operazione di impostazione della differenza

 // 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);

Produzione

 Set ("mango", "orange")

Esempio: Imposta operazione sottoinsieme

 // 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);

Produzione

 vero

JavaScript Setse WeakSetssono stati introdotti in ES6 . Alcuni browser potrebbero non supportarne l'utilizzo. Per saperne di più, visita il supporto di JavaScript Sets e JavaScript WeakSets.

Articoli interessanti...