2013-08-02 184 views
1

我有JSON查詢的一部分,這一點:評估變量

var JSON = [ 
    { 
     "id": 1, 
     "name1": "Seymore Butts", 
     "name2": "Jane Doe", 
     "name3": "John Smith", 
     "name4": "Mike Hawk" 
    }]; 
for (i = 1; i < 5; i++) { 
    var index = "name" + i; 
    window.console.log(JSON[0].index); 
} 

,當然它變得不確定,因爲它是尋找

JSON[0].index 

,而不是

JSON[0].name1 

任何強迫它評估索引變量而不是隻讀「索引」的方法?

+5

對於未來的參考,你有一個數組* JavaScript對象*,而不是* JSON *(總是根據定義,一個字符串) – jbabey

+2

可能重複[JavaScript對象:以字符串形式訪問變量屬性](http://stackoverflow.com/questions/4255472/javascript-object-access-variable-property-by-name-as-string),http:// stackoverflow .com/questions/3153969/create-object-using-variables-for-property-name,http://stackoverflow.com/questions/2241875/how-to-create-object-property-from-variable-value-in -javascript,http://stackoverflow.com/questions/4694652/javascript-creating-object-and-using-variable-for-property-name,等等... – jbabey

回答

4

是啊,只要改變你的語法:

window.console.log(JSON[0][index]); 
2

使用此:

for (i = 1; i < 5; i++) { 
    var index = "name" + i; 
    window.console.log(JSON[0][index]); 
} 

.[]這裏的區別在於,object.sub_field將嘗試訪問名爲sub_field場,而object[sub_field]將嘗試訪問由命名的字段「無論是在可變sub_field」。