如何使用变量选择javascript数组键?

时间:2014-05-07 08:35:22

标签: javascript arrays json

我有这个json:

var myjson = [
    {"ID":1, "FullName":"Breese Dantour"},
    {"ID":2, "FullName":"Danny Xirjav"},
    {"ID":3, "FullName":"Ben Falco"}
]

我试图通过使用数组的密钥抓住它:

var mykey = new array();
mykey.push("ID");
mykey.push("FullName");

var res = "";
for (var i = 0; i < myjson.length; i++) {
   var inner;
   for (var c=0; c < mykey.length; c++){
      inner = inner + "<td>" + myjson[i].mykey[c] + "</td>";
   }
   res = res + "<tr>" + inner + "</tr>\n";
}
alert(res);

我收到了这个错误:

Error: TypeError: myjson[i].mykey is undefined

我知道这是因为mykey不是myjson的关键。但我希望mykey返回它的值,使其显示为myjson键 还有其他方法吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

var mykey = new array();
mykey.push("ID");
mykey.push("FullName");

var res = "";
for(var i = 0; i < myjson.length; i++){
   var inner = "";
   for (var c=0; c < mykey.length; c++){
      inner = inner+"<td>"+myjson[i][mykey[c]]+"</td>";
   }
   res = res+"<tr>"+inner+"</tr>\n";
}
alert(res);

答案 1 :(得分:1)

您可以按键获取数组元素:

myjson[i][ mykey[c] ];

答案 2 :(得分:1)

myjson[i].mykey[c]替换为myjson[i][mykey[c]]

这可行的原因是点运算符(.)的优先级高于[],因此前一个表达式的计算结果为(myjson[i].mykey)[c],因为undefined {1}}没有属性myjson[i]