2015-05-26 2 views

risposta

12
  1. Tutto può essere utilizzato come una chiave in una mappa.
  2. Le mappe sono ordinate e consentono l'iterazione.

Combinando 1 e 2, quando si itera su una mappa, si otterrà un utile insieme di coppie chiave-valore!

Verificare il map.prototype.forEach() documentation.

Fonte: Un'altra buona domanda/risposta exchange. Vale la pena contrassegnare questo come un duplicato.

Aggiornamento: Aggiungendo a questa risposta per affrontare la questione direttamente:
si dovrebbe usare una mappa ogni volta che è necessario associare le cose insieme o preservare ordine di inserimento (strutture di dati comuni hanno bisogno di questo).

È possibile utilizzare un oggetto quando non è necessario farlo, ma si limitano a fare cose diverse.

Aggiornamento 2: OP ha chiesto se le funzioni sono troppo bene. Sì, perché i valori possono essere anche funzioni! Check it out:

let x = new Map(); 
let y =() => { 
    console.log('derp'); 
} 
x.set(y, "HI"); 
console.log(x.get(y)); //will log "HI" 

Per maggiori informazioni, controlla la fonte di questa citazione, in un grande capitolo di Eloquent JavaScript:
"Ogni valore ha un tipo che determina il suo ruolo Ci sono sei tipi di base di. valori in JavaScript: numeri, stringhe, booleani, oggetti, funzioni e valori non definiti. "

Inoltre, le principali differenze tra Mappa e oggetto, da MDN, sotto l'intestazione "oggetti e mappe Rispetto":

  1. un oggetto è un prototipo, quindi non ci sono tasti predefiniti nella mappa . Tuttavia, questo può essere aggirato usando map = Object.create (null).
  2. Le chiavi di un oggetto sono stringhe, dove possono essere qualsiasi valore per una mappa.
  3. È possibile ottenere facilmente le dimensioni di una mappa mentre è necessario tenere traccia manualmente delle dimensioni di un oggetto.

Ancora, le chiavi possono essere qualsiasi valore!

+1

Qualcosa? Anche funzioni? – Vandervals

+0

Sì! Dai un'occhiata alla risposta aggiornata! –

+0

Potresti spiegarmi cosa fa questa linea? 'let y =() => {' – Vandervals

6
  • Le mappe sono ordinate.
  • chiavi Mappa non devono essere stringhe
+0

puoi espandere l'ordinamento ordinato.dà qualcosa di più di quello che possiamo fare con la semplice iterazione delle chiavi attuali di un oggetto javascript – amdixon

+0

@amdixon - Sì. Garantisce che riceverai sempre lo stesso ordine. – Quentin

+1

Sì. Le mappe sono iterabili, mantengono l'ordine sull'iterazione e hanno dimensioni anziché lunghezze! –