通过路径获得财产

时间:2013-07-29 08:01:41

标签: javascript

假设我有以下对象:

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);
}

但是对于数组,这段代码不起作用。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

使用可以使用Eval()函数 它接受一个字符串内容并将其评估为命令。

http://www.w3schools.com/jsref/jsref_eval.asp

答案 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
}