ES6 - Mappe e set

ES6 introduce due nuove strutture dati: maps e sets. Cerchiamo di conoscerli in dettaglio.

Mappe

Una mappa è una raccolta ordinata di file key-value pairs. Le mappe sono simili agli oggetti. Tuttavia, ci sono alcune differenze tra mappe e oggetti. Questi sono elencati di seguito:

Suor n Oggetto Carta geografica
1 Le chiavi non possono essere di tipo Oggetto Le chiavi possono essere di qualsiasi tipo
2 Le chiavi non sono ordinate Le chiavi vengono ordinate
3 non iterabile iterabile

Sintassi

La sintassi per Map è fornita di seguito:

let map = new Map([iterable])
let map = new Map()

Esempio

L'esempio seguente crea una mappa utilizzando un costruttore iterabile -

<script>
   let andy = {ename:"Andrel"},
      varun = {ename:"Varun"},
      prijin = {ename:"Prijin"}
   let empJobs = new Map([
   [andy,'Software Architect'],
   [varun,'Developer']]
   );
   console.log(empJobs)
</script>

L'output del codice precedente è come mostrato di seguito:

{{…} => "Software Architect", {…} => "Developer"}

Verifica delle dimensioni della mappa

La proprietà size può essere utilizzata per determinare il numero di valori memorizzati nella mappa.

Sintassi

La sintassi per controllare la dimensione della mappa è fornita di seguito:

map_name.size

Esempio

<script>
   let daysMap = new Map();
   daysMap.set('1', 'Monday');
   daysMap.set('2', 'Tuesday');
   daysMap.set('3', 'Wednesday');
   console.log(daysMap.size);
</script>

L'output del codice precedente è come mostrato di seguito:

3

Di seguito sono riportati alcuni metodi comuni che possono essere utilizzati per manipolare le mappe:

Suor n Oggetto e mappa
1 set (chiave, valore)

Aggiunge chiave e valore alla mappa

2 ottenere (chiave)

Restituisce il valore se la chiave è abbinata

3 ha (chiave)

Restituisce vero se esiste un elemento con la chiave specificata; altrimenti restituisce false

4 chiavi ()

Restituisce un iteratore che contiene le chiavi per ogni elemento nell'oggetto mappa

5 valori()

Restituisce un iteratore che contiene i valori per ogni elemento nell'oggetto mappa

6 inserimenti()

Restituisce un iteratore che contiene le coppie chiave-valore per ogni elemento nella mappa

7 cancella (chiave)

Rimuove l'elemento specificato da un oggetto Map

WeakMap

WeakMap è un piccolo file subset of map. Le chiavi sono debolmente referenziate, quindi può essere solo non primitiva. Se non ci sono riferimenti alle chiavi dell'oggetto, sarà soggetto a garbage collection.

  • non iterabile
  • ogni chiave è il tipo di oggetto

WeakMap consentirà la garbage collection se la chiave non ha riferimenti.

Sintassi

La sintassi per WeakMap è indicata di seguito:

new WeakMap([iterable])

Esempio 1

<script>
   let emp = new WeakMap();
   emp.set(10,'Sachin');// TypeError as keys should be object
</script>

Esempio 2

<script>
   let empMap = new WeakMap();
   // emp.set(10,'Sachin');// Error as keys should be object
   let e1= {ename:'Kiran'},
      e2 = {ename:'Kannan'},
      e3 = {ename:'Mohtashim'}

   empMap.set(e1,1001);
   empMap.set(e2,1002);
   empMap.set(e3,1003);

   console.log(empMap)
   console.log(empMap.get(e2))
   console.log(empMap.has(e2))
   empMap.delete(e1)
   console.log(empMap)
</script>

L'output del codice sopra è come indicato di seguito:

{{…} => 1002, {…} => 1003, {…} => 1001}
1002
true
{{…} => 1002, {…} => 1003}

Impostato

Un set è una raccolta non ordinata di valori univoci. Questa struttura dati può contenere valori di tipi primitivi e di oggetti.

Sintassi

La sintassi per Set è fornita di seguito:

new Set([iterable])
new Set()

Esempio

<script>
   let names = new Set(['A','B','C','D']);
   console.log(names)
</script>

L'output del codice sopra è come indicato di seguito:

{"A", "B", "C", "D"}

Controllo delle dimensioni di un set

La proprietà size dell'oggetto Set può essere utilizzata per interrogare il numero di elementi nel Set.

Sintassi

La sintassi per controllare la dimensione di un insieme è menzionata di seguito:

set.size

Esempio

<script>
   let names = new Set(['A','B','C','D']);
   console.log(names.size)
</script>

L'output del codice sopra è come indicato di seguito:

4

Iterazione di un set

Possiamo usare il file forEach e for..ofloop per iterare attraverso un Set. Questo è mostrato nell'esempio seguente:

Esempio

<script>
   let names= new Set(['A','B','C','D']);
   //iterate using forEach
   console.log('forEach')
   names.forEach(n=>console.log(n))
   
   console.log('for of..')
   
   //iterate using for..of
   for(let n of names){
      console.log(n)
   }
</script>

L'output del codice sopra è come indicato di seguito:

forEach
A
B
C
D
for of..
A
B
C
D

I seguenti metodi possono essere utilizzati per manipolare un set:

Suor n Oggetto e mappa
1 aggiungi (elemento)

Aggiunge un elemento al set

2 ha (elemento)

Restituisce vero se l'elemento trovato; altrimenti restituisce false

3 elimina (elemento)

Elimina elemento specifico dal set

4 chiaro()

Cancella tutti gli elementi dal set

WeakSet

Un Weakset contiene gli oggetti debolmente, il che significa che gli oggetti archiviati in un WeakSet sono soggetti a garbage collection, se non sono referenziati. I WeakSet non sono iterabili e non hanno l'estensioneget metodo.

<script>

   let e1 = {ename:'A'}
   let e2 ={ename:'B'}
   let e3 ={ename:'C'}

   let emps = new WeakSet();
   emps.add(e1);
   emps.add(e2)
   .add(e3);

   console.log(emps)
   console.log(emps.has(e1))
   emps.delete(e1);
   console.log(emps)
</script>

L'output del codice sopra sarà come indicato di seguito -

WeakSet {{…}, {…}, {…}}
true
WeakSet {{…}, {…}}