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 {{…}, {…}}