2012-11-07 10 views
5
c =  { 
      "UNKNOWN_ERR" : 0, 
      "INDEX_SIZE_ERR" : 1, 
      "DOMSTRING_SIZE_ERR" : 2, 
      "HIERARCHY_REQUEST_ERR" : 3, 
      "WRONG_DOCUMENT_ERR" : 4, 
      "INVALID_CHARACTER_ERR" : 5, 
      "NO_DATA_ALLOWED_ERR" : 6, 
      "NO_MODIFICATION_ALLOWED_ERR" : 7, 
      "NOT_FOUND_ERR" : 8, 
      "NOT_SUPPORTED_ERR" : 9} 

per ottenere il valore con il tasto è facile, mi basta usare la chiave in c["UNKNOWN_ERR"] per ottenere 0, dato che tutti i valori sono unici è sicuro per ottenere la chiave (messaggio) dal valore (ErrorCode).Ottieni la chiave utilizzando il valore da un oggetto in JavaScript?

C'è un modo standard per farlo o devo scrivere una funzione che guardi in tutta la chiave e cerchi quel valore specifico?

+1

Possibile duplicato di [il modo migliore per ottenere la chiave di un oggetto javascript chiave/valore] (http://stackoverflow.com/questions/6268679/best-way-to-get-the-key-of-a- valore-chiave-oggetto-javascript) – Andy

risposta

15

Come si è già assunto, è necessario eseguire un'iterazione sugli attributi dell'oggetto e controllare il valore.

for(var key in c) { 
    if(c[key] === whatever) { 
     // do stuff with key 
    } 
} 
5

Underscore fornisce una soluzione più facile a questo

È possibile ottenere chiave utilizzando questo codice anche

var errKey = _.invert(c)[errCode]; 

per e.x. se si utilizza errCode = 3 come illustrato di seguito

var errKey = _.invert(c)[3]; 

poi

errKey sarà HIERARCHY_REQUEST_ERR

9

ES6 find metodo:

const getKey = (obj,val) => Object.keys(obj).find(key => obj[key] === val); 

nel tuo caso

console.log(getKey(c,1)); // INDEX_SIZE_ERR 
1

Prova findKey() metodo lodash:

var key = _.findKey(c, function(v) { return v === val; }) 

dove val - valore della proprietà.

+0

La domanda originale non sembra chiedere informazioni sulle librerie esterne. – Matteo

Problemi correlati