1

我正在研究方法代码,我必须在其中迭代带有动态数组的 json 对象。我的代码是这样的:

var tableHeaders = ["id", "name", "status"];    
var item = {
    id: 1,
    name: "test name",
    status: true,
    email: "test@gmail.com"
}    
console.log(item.id);    // works well --> 1    
console.log(tableHeaders[0]); // works well --> id    
console.log(item.tableHeaders[0]);  // not works

这里是 jsfiddle: http: //jsfiddle.net/kslagdive/rjFHV/ 请建议我,我怎样才能获得带有数组元素的项目的价值?谢谢

4

4 回答 4

2

由于您的属性名称是动态的,因此您必须使用括号表示法而不是点表示法

console.log(item[tableHeaders[0]]);  // Works.
于 2013-06-12T07:35:38.770 回答
1

它应该是...

item[ tableHeaders[0] ];

...也就是说,使用括号表示法通过其名称访问属性。请注意,您在此处使用任何复杂的表达式,例如:

item[ 'e' + 'mail' ]; // the same as item.email
于 2013-06-12T07:35:40.830 回答
1

使用动态键时需要使用[]符号而不是符号.

console.log(item[tableHeaders[0]]);

演示:小提琴

于 2013-06-12T07:35:48.710 回答
0

Tabheaders 不是项目的值。尝试

var tableHeaders = ["id", "name", "status"];    
var item = {
    id: 1,
    name: "test name",
    status: true,
    email: "test@gmail.com",
    tableHeaders: tableHeaders // define "tableHeaders" as value of "item"
}   

感谢@xec 的评论。

好吧,答案已经在这里了,但无论如何:

var key = tableHeaders[0];  // the key for the value you want to extract from items.
var value = item[key];      // get the value from item based on the key defined 
                            // in table headers using the [Bracket notation][1] 
                            // (@Frédéric Hamidi).
于 2013-06-12T07:36:12.197 回答