1

假设我有以下对象:

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

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

4

3 回答 3

2

使用可以使用 Eval() 函数,该函数接受字符串内容并将其作为命令进行评估。

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

于 2013-07-29T08:09:26.223 回答
0

您的属性存储为字符串这一事实不是问题。像这样访问对象的属性:

var obj = { 'key_a' : [{key:'value', otherkey: 'other value' }] },
    property = "key_a";

 obj[property][0].otherkey; // outputs "other value"

如果可以,请避免使用 eval(),它只会增加程序的开销,并且它的使用被某些人认为是不好的做法。

于 2013-07-29T08:17:08.623 回答
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
}
于 2013-07-29T08:18:37.440 回答