2012-07-09 116 views
11

我对Javascript的词典有疑问。我有一个字典,其中键值对是这样动态添加的:如何在javascript字典中使用键值查找值

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

我将调用此函数并将其传递给不同的键和值。但是现在我想根据密钥检索我的价值,但我无法这样做。任何人都可以告诉我正确的方法吗?

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

至于我的钥匙是一个变量,我不能使用Dict.my_key

感谢。

回答

17

JavaScript中的数组不使用字符串作为键。您可能会发现值在那里,但关键是一个整数。

如果您Dict成一个对象,这将工作:

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

my_key变量已经是一个字符串,所以你并不需要更多的报价。

+0

嗨,我可以通过找到关键使用价值做到相反 – 2012-07-09 10:49:50

+0

并不那么容易。您需要做一个循环,尝试对象中的每个值,直到找到合适的值,然后返回该密钥。问题是可能有两个值相同,所以您需要将代码放入addpair()以防止重复。 – 2012-07-09 10:53:42

+0

Javascript中的数组* *使用字符串作为键,并且任何您尝试用作数组索引的东西都将被强制转换为幕后的字符串。您可以通过使用'toString'方法创建一个对象并将其用作数组索引来确认。它将使用任何'toString'方法返回。 – 2012-07-09 11:01:23