2012-11-07 15 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} 

Um den Wert zu erhalten mit der Taste einfach ist, ich den Schlüssel nur in c["UNKNOWN_ERR"] verwende 0, erhalten gegeben, dass alle Werte sind einzigartig sicher ist, den Schlüssel (Nachricht) von dem Wert (Error-Code) zu erhalten.Get-Taste mit Wert von einem Objekt in JavaScript?

Gibt es einen Standard Weg, oder muss ich eine Funktion schreiben, die in allen Schlüssel sucht und diesen spezifischen Wert sucht?

+1

Mögliches Duplikat von [bester Weg, um den Schlüssel eines Schlüssel/Wert-Javascript-Objekts zu erhalten] (http://stackoverflow.com/questions/6268679/best-way-to-get-the-key-of-a- key-value-javascript-object) – Andy

Antwort

15

Wie Sie bereits angenommen haben, müssen Sie über die Attribute des Objekts iterieren und den Wert überprüfen.

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

Underscore bietet eine einfache Lösung für dieses

Sie können auch

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

für e.x. diesen Code-Schlüssel erhalten mit wenn Sie errCode = 3 verwenden, wie unten

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

dann

gezeigt wird errKeyHIERARCHY_REQUEST_ERR

9

es6 find Methode:

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

in Ihrem Fall

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

Versuchen findKey() lodash Methode:

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

wo val - Eigenschaftswert.

+0

Die ursprüngliche Frage scheint nicht nach externen Bibliotheken zu fragen. – Matteo

Verwandte Themen