Javascript JSON循环不超过1个条目

时间:2016-07-13 15:11:29

标签: javascript jquery json

我正在阅读一些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?

5 个答案:

答案 0 :(得分:2)

这里的一些答案会让你感到困惑!他们错过了在数组中的对象中有数组的事实。

  • json是一个数组,包含1个元素
  • 该对象具有属性main,它本身就是一个数组
  • 就是这个&#34;第三级&#34;你试图循环的数组

&#13;
&#13;
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;
&#13;
&#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>')
})

JSFIDDLE

答案 4 :(得分:-1)

因为你必须循环遍历json [0] .main,而不是通过json ...