3.1 Collezione Map
In ECMAScript 2015 (ES6) in JavaScript hanno aggiunto due nuove strutture dati: Map
e Set
.
Queste strutture dati forniscono modi più flessibili ed efficienti di memorizzazione e gestione delle collezioni di dati
rispetto agli oggetti tradizionali e agli array.
Map
è una struttura dati che ti permette di conservare coppie chiave-valore, dove le chiavi
possono essere di qualsiasi tipo, inclusi oggetti e funzioni.
1. Creazione e inizializzazione di Map:
const map = new Map();
2. Aggiunta di elementi:
Il metodo set
è usato per aggiungere nuove coppie chiave-valore al Map
.
map.set('key1', 'value1');
map.set(2, 'value2');
map.set({ name: 'objectKey' }, 'value3');
3. Ottenere elementi:
Il metodo get
è usato per ottenere il valore tramite la chiave.
const map = new Map();
map.set('key1', 'value1');
map.set(2, 'value2');
map.set({ name: 'objectKey' }, 'value3');
console.log(map.get('key1')); // 'value1'
console.log(map.get(2)); // 'value2'
4. Controllo dell'esistenza di una chiave:
Il metodo has
verifica se una chiave esiste nel Map
.
const map = new Map();
map.set('key1', 'value1');
map.set(2, 'value2');
map.set({ name: 'objectKey' }, 'value3');
console.log(map.has('key1')); // true
console.log(map.has('key3')); // false
5. Rimozione di elementi:
Il metodo delete
rimuove un elemento tramite la chiave.
const map = new Map();
map.set('key1', 'value1');
map.set(2, 'value2');
map.set({ name: 'objectKey' }, 'value3');
map.delete('key1');
console.log(map.has('key1')); // false
6. Pulizia di Map:
Il metodo clear
rimuove tutti gli elementi dal Map
.
const map = new Map();
map.set('key1', 'value1');
map.set(2, 'value2');
map.set({ name: 'objectKey' }, 'value3');
map.clear();
console.log(map.size); // 0
7. Iterazione su Map:
Puoi usare un ciclo for...of
per iterare su Map
.
Esempio:
const map = new Map();
map.set('key1', 'value1');
map.set(2, 'value2');
for (const [key, value] of map) {
console.log(`${key}: ${value}`);
}
// 'key1: value1'
// '2: value2'
3.2 Collezione Set
Set
è una struttura dati che ti permette di memorizzare valori unici di qualsiasi tipo,
inclusi oggetti e primitivi.
1. Creazione e inizializzazione di Set:
const set = new Set();
2. Aggiunta di elementi:
Il metodo add
è utilizzato per aggiungere nuovi valori al Set
.
set.add(1);
set.add('value2');
set.add({ name: 'objectValue' });
3. Controllo dell'esistenza di un valore:
Il metodo has
verifica se un valore esiste nel Set
.
const set = new Set();
set.add(1);
set.add('value2');
set.add({ name: 'objectValue' });
console.log(set.has(1)); // true
console.log(set.has('value3')); // false
4. Rimozione di elementi:
Il metodo delete
rimuove un valore dal Set
.
const set = new Set();
set.add(1);
set.add('value2');
set.add({ name: 'objectValue' });
set.delete(1);
console.log(set.has(1)); // false
5. Pulizia di Set:
Il metodo clear
rimuove tutti gli elementi dal Set
.
const set = new Set();
set.add(1);
set.add('value2');
set.add({ name: 'objectValue' });
set.clear();
console.log(set.size); // 0
6. Iterazione su Set:
Puoi usare un ciclo for...of
per iterare su Set
.
const set = new Set();
set.add(1);
set.add('value2');
for (const value of set) {
console.log(value);
}
// 1
// 'value2'
3.3 Confronto tra Map e Set
Vantaggi di Map:
- Chiavi arbitrarie: in
Map
le chiavi possono essere di qualsiasi tipo, inclusi oggetti e funzioni, a differenza degli oggetti, dove le chiavi possono essere solo stringhe o simboli. - Elementi ordinati: gli elementi in
Map
mantengono l'ordine di inserimento, il che semplifica l'iterazione su di essi in ordine di aggiunta. - Dimensione della collezione: il metodo
size
permette di ottenere rapidamente il numero di elementi inMap
.
Vantaggi di Set:
- Valori unici:
Set
garantisce automaticamente che tutti i suoi elementi siano unici. - Elementi ordinati: gli elementi in
Set
mantengono l'ordine di inserimento, il che semplifica l'iterazione su di essi in ordine di aggiunta. - Operazioni ottimizzate:
Set
offre metodi ottimizzati per aggiungere, rimuovere e verificare la presenza di elementi.
Esempi pratici
Esempio di utilizzo di Map
per conservare informazioni sugli utenti:
const users = new Map();
users.set(1, { name: 'Alice', age: 25 });
users.set(2, { name: 'Bob', age: 30 });
for (const [id, user] of users) {
console.log(`User ID: ${id}, Name: ${user.name}, Age: ${user.age}`);
}
// User ID: 1, Name: Alice, Age: 25
// User ID: 2, Name: Bob, Age: 30
Esempio di utilizzo di Set
per filtrare valori unici:
const numbers = [1, 2, 3, 1, 2, 4, 5, 3];
const uniqueNumbers = new Set(numbers);
for (const number of uniqueNumbers) {
console.log(number);
}
// 1
// 2
// 3
// 4
// 5
GO TO FULL VERSION