我希望使用[]JSON文本作为数组访问该对象FOR...IN.但迭代通过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']);
}
Run Code Online (Sandbox Code Playgroud)
您可以在这里@ JSBin在线测试代码
此致,
穆尼姆
您不应该使用for … in以下方法迭代数组:
尽管使用它作为迭代数组的方法可能很诱人,但这是一个坏主意.除了数组元素之外,for ... in语句还迭代用户定义的属性,因此如果修改数组的非整数或非正属性(例如,通过向其添加"foo"属性,或者甚至通过添加方法或属性到Array.prototype),for ... in语句将返回除数字索引之外的用户定义属性的名称.此外,由于迭代的顺序是任意的,因此迭代数组可能无法按数字顺序访问元素.因此,在迭代数组时,最好使用带有数字索引的传统for循环.
只需以这种方式遍历您的数组:
for (var i = 0, length = myJSONObject.length; i < length; i++) {
alert(myJSONObject[i].method);
}
Run Code Online (Sandbox Code Playgroud)
见JSBin.