2012-07-09 21 views
11

Mam pytanie dotyczące słownika Javascript. Mam słownika, w którym pary klucz-wartość są dodawane dynamicznie tak:Jak znaleźć wartość za pomocą klucza w słowniku javascript

var Dict = [] 
var addpair = function (mykey , myvalue) [ 
    Dict.push({ 
    key: mykey, 
    value: myvalue 
    }); 
} 

wezwę tej funkcji i przekazać go różne klucze i wartości. Ale teraz chcę odzyskać swoją wartość w oparciu o klucz, ale nie jestem w stanie tego zrobić. Czy ktoś może mi powiedzieć właściwą drogę?

var givevalue = function (my_key) { 
    return Dict["'" +my_key +"'"]   // not working 
    return Dict["'" +my_key +"'"].value // not working 
} 

Jak mój klucz jest zmienna, nie mogę używać Dict.my_key

Dzięki.

Odpowiedz

17

Tablice w JavaScript nie używają ciągów jako klawiszy. Prawdopodobnie znajdziesz tam wartość, ale klucz jest liczbą całkowitą.

Jeśli się Dict do obiektu, to będzie działać:

var Dict = {}; 
var addpair = function (my_key, my_value) { 
    Dict[my_key] = my_value; 
} 
var givevalue = function (my_key) { 
    return Dict[my_key]; 
} 

Zmienna my_key już jest ciągiem znaków, więc nie trzeba więcej cytatów.

+0

Witam, mogę to zrobić odwrotnie, znajdując klucz używając wartości –

+0

Nie tak łatwo. Będziesz musiał wykonać pętlę, próbując każdej wartości w obiekcie, aż uzyskasz właściwą wartość, a następnie zwrócisz ten klucz. Problem polega na tym, że mogą istnieć dwie wartości takie same, więc musisz umieścić kod w addpair(), aby zapobiec duplikatom. –

+0

Tablice w JavaScript * do * używają łańcuchów jako kluczy, a wszystko, co spróbujesz użyć jako indeksu tablicy, zostanie zmodelowane do ciągu znaków za kulisami. Możesz to potwierdzić, tworząc obiekt za pomocą metody 'toString' i używając go jako indeksu tablicy. Będzie używał każdej zwróconej metody 'toString'. –

Powiązane problemy