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

Aby uzyskać wartość używając klawisza jest proste, wystarczy użyć klawisza w c["UNKNOWN_ERR"] dostać 0, biorąc pod uwagę, że wszystkie wartości są unikatowe jest bezpieczne, aby dostać klucz (wiadomość) od wartości (ERRORCODE).Uzyskaj klucz używając wartości z obiektu w JavaScript?

Czy istnieje standardowy sposób, aby to zrobić, czy muszę napisać funkcję, która wygląda we wszystkich kluczach i szuka tej konkretnej wartości?

+1

Prawdopodobny duplikat [najlepszego sposobu uzyskania klucza obiektu javascript klucz/wartość] (http://stackoverflow.com/questions/6268679/best-way-to-get-the-key-ofa-a- klucz-wartość-javascript-object) – Andy

Odpowiedz

15

Jak już zakładałeś, musisz powtórzyć atrybuty obiektu i sprawdzić jego wartość.

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

Underscore zapewnia bardziej proste rozwiązanie tego

Można dostać klucz za pomocą tego kodu również

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

dla e.x. jeśli używasz errCode = 3, jak pokazano poniżej

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

następnie

errKey będzie HIERARCHY_REQUEST_ERR

9

ES6 find metoda:

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

w przypadku

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

Spróbuj findKey() metodę lodash:

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

gdzie Val - wartość nieruchomości.

+0

Pierwotne pytanie nie pyta o biblioteki zewnętrzne. – Matteo

Powiązane problemy