假设我有以下对象:
var obj = {
property: [{key:"value1"},{key:"value2"}]
}
我有以下字符串property[0].key
如何在代码中使用此字符串获取value2
?
基本上我想要这样的obj["property[1].key"]
如果字符串只有点,我可以使用以下代码:
function get_property_by_string(object, string){
return string.split(".").reduce(function(obj, key) {
return obj[key];
}, object);
}
但是对于数组,这段代码不起作用。有什么建议吗?
答案 0 :(得分:1)
使用可以使用Eval()函数 它接受一个字符串内容并将其评估为命令。
答案 1 :(得分:0)
您的属性存储为字符串的事实不是问题。访问对象的属性:
var obj = { 'key_a' : [{key:'value', otherkey: 'other value' }] },
property = "key_a";
obj[property][0].otherkey; // outputs "other value"
如果可以的话,避免使用eval(),它只会增加你的程序的开销,并且它的使用被一些人认为是不好的做法。
答案 2 :(得分:0)
您正在将“属性”创建为数组,因此您应该可以直接访问它。我已经在Chrome上本地测试了以下代码,它似乎工作正常。
var obj = {
property: [{key:"value1"},{key:"value2"}]
}
function test()
{
alert(obj.property[0].key); // shows value1
alert(obj.property[1].key); // shows value2
}