ES6 - Collezioni

ES6 introduce due nuove strutture dati: mappe e insiemi.

  • Maps - Questa struttura dati consente di mappare una chiave a un valore.

  • Sets- Gli insiemi sono simili agli array. Tuttavia, i set non incoraggiano i duplicati.

Mappe

L'oggetto Map è una semplice coppia chiave / valore. Chiavi e valori in una mappa possono essere primitivi o oggetti.

Di seguito è riportata la sintassi per lo stesso.

new Map([iterable])

Il parametro iterable rappresenta qualsiasi oggetto iterabile i cui elementi comprendono una coppia chiave / valore. Le mappe sono ordinate, cioè attraversano gli elementi nell'ordine del loro inserimento.

Proprietà mappa

Suor n Proprietà e descrizione
1 Map.prototype.size

Questa proprietà restituisce il numero di coppie chiave / valore nell'oggetto Map.

Comprensione delle operazioni di base della mappa

La funzione set () imposta il valore per la chiave nell'oggetto Map. La funzione set () accetta due parametri, ovvero la chiave e il suo valore. Questa funzione restituisce l'oggetto Map.

La funzione has () restituisce un valore booleano che indica se la chiave specificata si trova nell'oggetto Map. Questa funzione prende una chiave come parametro.

var map = new Map(); 
map.set('name','Tutorial Point'); 
map.get('name'); // Tutorial point

L'esempio precedente crea un oggetto mappa. La mappa ha un solo elemento. La chiave dell'elemento è indicata daname. La chiave è mappata su un valoreTutorial point.

Note- Le mappe distinguono valori simili ma portano tipi di dati diversi. In altre parole, un fileinteger key 1 è considerato diverso da un string key “1”. Considera il seguente esempio per comprendere meglio questo concetto

var map = new Map(); 
map.set(1,true); 
console.log(map.has("1")); //false 
map.set("1",true); 
console.log(map.has("1")); //true

Produzione

false 
true

Il set()è anche concatenabile. Considera il seguente esempio.

var roles = new Map(); 
roles.set('r1', 'User') 
.set('r2', 'Guest') 
.set('r3', 'Admin'); 
console.log(roles.has('r1'))

Produzione

True

L'esempio sopra, definisce un oggetto mappa. L'esempio concatena la funzione set () per definire la coppia chiave / valore.

Il get() viene utilizzata per recuperare il valore corrispondente alla chiave specificata.

Al costruttore della mappa può anche essere passato un array. Inoltre, map supporta anche l'uso dell'operatore spread per rappresentare un array.

Esempio

var roles = new Map([ 
   ['r1', 'User'], 
   ['r2', 'Guest'], 
   ['r3', 'Admin'], 
]);  
console.log(roles.get('r2'))

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

Guest

Note - La funzione get () restituisce undefined se la chiave specificata non esiste nella mappa.

Il set () sostituisce il valore per la chiave, se esiste già nella mappa. Considera il seguente esempio.

var roles = new Map([ 
   ['r1', 'User'], 
   ['r2', 'Guest'], 
   ['r3', 'Admin'], 
]);  
console.log(`value of key r1 before set(): ${roles.get('r1')}`) 
roles.set('r1','superUser') 
console.log(`value of key r1 after set(): ${roles.get('r1')}`)

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

value of key r1 before set(): User 
value of key r1 after set(): superUser

Metodi mappa

Suor n Metodo e descrizione
1 Map.prototype.clear ()

Rimuove tutte le coppie chiave / valore dall'oggetto Map.

2 Map.prototype.delete (chiave)

Rimuove qualsiasi valore associato alla chiave e restituisce il valore che Map.prototype.has (chiave) avrebbe precedentemente restituito.

Map.prototype.has (key) restituirà false in seguito.

3 Map.prototype.entries ()

Restituisce un nuovo oggetto Iterator che contiene an array of [chiave, valore] per ogni elemento nell'oggetto Mappa nell'ordine di inserimento.

4 Map.prototype.forEach (callbackFn [, thisArg])

Chiamate callbackFnuna volta per ogni coppia chiave-valore presente nell'oggetto Map, in ordine di inserzione. Se un parametro thisArg viene fornito a forEach, verrà utilizzato come valore "this" per ogni callback.

5 Map.prototype.keys ()

Restituisce un nuovo oggetto Iterator che contiene il file keys per ogni elemento nell'oggetto Mappa in ordine di inserimento.

6 Map.prototype.values ​​()

Restituisce un nuovo oggetto Iterator che contiene an array of [chiave, valore] per ogni elemento nell'oggetto Mappa nell'ordine di inserimento.

Il per ... di Loop

L'esempio seguente illustra l'attraversamento di una mappa utilizzando il ciclo for… of.

'use strict' 
var roles = new Map([ 
   ['r1', 'User'], 
   ['r2', 'Guest'], 
   ['r3', 'Admin'], 
]);
for(let r of roles.entries()) 
console.log(`${r[0]}: ${r[1]}`);

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

r1: User 
r2: Guest 
r3: Admin

Mappe deboli

Una mappa debole è identica a una mappa con le seguenti eccezioni:

  • Le sue chiavi devono essere oggetti.

  • Le chiavi in ​​una mappa debole possono essere raccolte tramite Garbage Collection. Garbage collection è un processo di cancellazione della memoria occupata da oggetti non referenziati in un programma.

  • Una mappa debole non può essere iterata o cancellata.

Esempio: mappa debole

'use strict' 
let weakMap = new WeakMap(); 
let obj = {}; 
console.log(weakMap.set(obj,"hello"));  
console.log(weakMap.has(obj));// true

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

WeakMap {} 
true

Imposta

Un set è una struttura dati ES6. È simile a un array con l'eccezione che non può contenere duplicati. In altre parole, ti consente di memorizzare valori univoci. I set supportano sia valori primitivi che riferimenti a oggetti.

Proprio come le mappe, anche gli insiemi sono ordinati, cioè gli elementi vengono iterati nel loro ordine di inserimento. Un set può essere inizializzato utilizzando la seguente sintassi.

Imposta proprietà

Suor n Proprietà e descrizione
1 Set.prototype.size

Restituisce il numero di valori nell'oggetto Set.

Impostare metodi

Suor n Metodo e descrizione
1 Set.prototype.add (valore)

Aggiunge un nuovo elemento con il valore dato all'oggetto Set. Restituisce l'oggetto Set.

2 Set.prototype.clear ()

Rimuove tutti gli elementi dall'oggetto Set.

3 Set.prototype.delete (valore)

Rimuove l'elemento associato al valore.

4 Set.prototype.entries ()

Restituisce un nuovo oggetto Iterator che contiene an array of[valore, valore] per ogni elemento nell'oggetto Set, in ordine di inserimento. Viene mantenuto simile all'oggetto Map, in modo che ogni voce abbia lo stesso valore per la chiave e il valore qui.

5 Set.prototype.forEach (callbackFn [, thisArg])

Chiamate callbackFnuna volta per ogni valore presente nell'oggetto Set, in ordine di inserimento. SeathisArg viene fornito a forEach, verrà utilizzato come valore "this" per ogni callback.

6 Set.prototype.has (valore)

Restituisce un valore booleano che asserisce se un elemento è presente con il valore specificato nell'oggetto Set o meno.

7 Set.prototype.values ​​()

Restituisce un nuovo oggetto Iterator che contiene il file values per ogni elemento nell'oggetto Set in ordine di inserimento.

Set debole

Gli insiemi deboli possono contenere solo oggetti e gli oggetti che contengono possono essere raccolti da rifiuti. Come le mappe deboli, i set deboli non possono essere iterati.

Esempio: utilizzo di un set debole

'use strict' 
   let weakSet = new WeakSet();  
   let obj = {msg:"hello"}; 
   weakSet.add(obj); 
   console.log(weakSet.has(obj)); 
   weakSet.delete(obj); 
   console.log(weakSet.has(obj));

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

true 
false

Iteratore

Iterator è un oggetto che consente di accedere a una raccolta di oggetti uno alla volta. Sia set che map hanno metodi che restituiscono un iteratore.

Gli iteratori sono oggetti con next()metodo. Quando viene invocato il metodo next (), restituisce un oggetto con'value' e 'done'proprietà . 'done' è booleano, restituirà true dopo aver letto tutti gli elementi nella raccolta

Esempio 1: Set e Iterator

var  set = new Set(['a','b','c','d','e']);  
var iterator = set.entries(); 
console.log(iterator.next())

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

{ value: [ 'a', 'a' ], done: false }

Poiché il set non memorizza chiave / valore, la matrice di valori contiene chiave e valore simili. done sarà falso in quanto vi sono più elementi da leggere.

Esempio 2: Set e Iterator

var  set = new Set(['a','b','c','d','e']);  
var iterator = set.values(); 
console.log(iterator.next());

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

{ value: 'a', done: false }

Esempio 3: Set e Iterator

var  set = new Set(['a','b','c','d','e']);  
var iterator = set.keys(); 
console.log(iterator.next());

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

{ value: 'a', done: false }

Esempio 4: mappa e iteratore

var map = new Map([[1,'one'],[2,'two'],[3,'three']]); 
var iterator = map.entries(); 
console.log(iterator.next());

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

{ value: [ 1, 'one' ], done: false }

Esempio 5: mappa e iteratore

var map = new Map([[1,'one'],[2,'two'],[3,'three']]); 
var iterator = map.values(); 
console.log(iterator.next());

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

{value: "one", done: false}

Esempio 6: mappa e iteratore

var map = new Map([[1,'one'],[2,'two'],[3,'three']]); 
var iterator = map.keys(); 
console.log(iterator.next());

Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.

{value: 1, done: false}