我想使用[]
作为数组访问FOR...IN
JSON文字中的对象。但是,遍历FOR...IN
会给对象x
undefined
。请参阅下面的代码。
var myJSONObject = [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
];
for (var x in myJSONObject) {
alert(x['method']);
}
您可以在线测试代码@ JSBin
的问候,
穆奈姆
答案 0 :(得分:5)
您不应使用for … in
迭代数组:
虽然使用它可能很诱人 这是一种迭代过程的方法 数组,这是一个坏主意。该 for ... in语句迭代 除了用户定义的属性 数组元素,所以如果你修改 数组的非整数或 非正性质(例如 为它添加“foo”属性甚至是 通过添加方法或属性 Array.prototype),for ... in 声明将返回您的姓名 除了用户定义的属性 数字索引。还有,因为 迭代的顺序是任意的, 迭代数组可能无法访问 数字顺序的元素。就这样吧 更好地使用传统的for循环 迭代时使用数字索引 过阵列。
以这种方式循环遍历数组:
for (var i = 0, length = myJSONObject.length; i < length; i++) {
alert(myJSONObject[i].method);
}
请参阅JSBin。
答案 1 :(得分:1)
尝试
for (var x in myJSONObject) {
alert( myJSONObject[x]['method'] );
}
答案 2 :(得分:0)
for ... in语法为您提供迭代对象的键,而不是值。因此,您必须执行以下操作:
for (var idx in myJSONObject) {
alert(myJSONObject[idx]['method']);
}