我正在阅读一些json代码,并在最后添加了一个日志,它会给我id。 我的问题是,虽然有2个条目,但日志只计数1并停在那里。
var json = [{"main":[{
"id" : "1",
"msg" : "hi",
"tid" : "2013-05-05 23:35",
"fromWho": "hello1@email.se"
},
{
"id" : "2",
"msg" : "there",
"tid" : "2013-05-05 23:45",
"fromWho": "hello2@email.se"
}]}];
for(var i = 0; i < json.length; i++) {
var obj = json[i];
console.log(obj['main'][i].id);
}
为什么只计算1而不是2?
答案 0 :(得分:2)
这里的一些答案会让你感到困惑!他们错过了在数组中的对象中有数组的事实。
json
是一个数组,包含1个元素main
,它本身就是一个数组
var json = [{"main":[{
"id" : "1",
"msg" : "hi",
"tid" : "2013-05-05 23:35",
"fromWho": "hello1@email.se"
},
{
"id" : "2",
"msg" : "there",
"tid" : "2013-05-05 23:45",
"fromWho": "hello2@email.se"
}]}];
for(var i = 0; i < json[0].main.length; i++) {
var obj = json[0].main[i];
console.log(obj.id);
}
&#13;
答案 1 :(得分:1)
这是因为您的数组包含一个对象。我想你需要访问main
属性:
for(var i = 0; i < json[0].main.length; i++) {
console.log(json[0].main[i].id);
}
var json = [{"main":[{
"id" : "1",
"msg" : "hi",
"tid" : "2013-05-05 23:35",
"fromWho": "hello1@email.se"
},
{
"id" : "2",
"msg" : "there",
"tid" : "2013-05-05 23:45",
"fromWho": "hello2@email.se"
}]}];
for(var i = 0; i < json[0].main.length; i++) {
console.log(json[0].main[i].id);
}
答案 2 :(得分:0)
你有一个包含1个元素的数组(&#39; main&#39;)和&#39; main&#39;你有一个包含2个元素的数组 改为:
for(var i = 0; i < json[0].length; i++) {
console.log(json[0][i].id);
}
答案 3 :(得分:0)
json
是一个对象数组。因此json[0]
将返回main
对象
使用forEach循环遍历数组
var _getMain = json[0].main // will return main array;
_getMain.forEach(function(item){
document.write('<pre>'+item.id+'</pre>')
})
答案 4 :(得分:-1)
因为你必须循环遍历json [0] .main,而不是通过json ...