2012-06-07 42 views
0

我正尝试使用for..in循环来访问'Event'中的描述键/值,但目前我还不完全确定如何实现这一点。首先,我使用for..in并将其记录下来,这将返回响应中的所有顶级条目,现在我要如何深入分析并选择Event.description?我首先认为它是数据[prop] .Event.description,但事实并非如此。我应该使用正常的循环,然后在这里for..in?从我的JSON响应中访问特定的一组值?

这里是我当前的代码:

$(document).ready(function() { 

    var data = { 
     "status": "ok", 
     "code": "200", 
     "message": "event details", 
     "data": [{ 
      "Event": { 
       "id": "1", 
       "name": "Sample Event Number 1", 
       "description": "Sample Event Number 4 Description ....", 
       "event_date": "2012-05-31 00:00:00", 
       "Band": [{ 
        "id": "1", 
        "name": "Support #1", 
        "BandsEvent": { 
         "id": "7", 
         "band_id": "2", 
         "event_id": "8", 
         "created": "2012-05-23 15:53:56", 
         "modified": "2012-05-23 15:53:56" 
        }}, 
       { 
        "id": "2", 
        "name": "Support #2", 
        "BandsEvent": { 
         "id": "8", 
         "band_id": "1", 
         "event_id": "8", 
         "created": "2012-05-23 15:53:57", 
         "modified": "2012-05-23 15:53:57" 
        }}] 
      }}, 
     { 
      "Event": { 
       "id": "2", 
       "name": "Sample Event Number 2", 
       "description": "Sample Event Number 4 Description ....", 
       "event_date": "2012-05-31 00:00:00", 
       "Band": [{ 
        "id": "2", 
        "name": "Another Crazy Band", 
        "BandsEvent": { 
         "id": "3", 
         "band_id": "2", 
         "event_id": "8", 
         "created": "2012-05-23 15:53:56", 
         "modified": "2012-05-23 15:53:56" 
        }}, 
       { 
        "id": "4", 
        "name": "The Band", 
        "BandsEvent": { 
         "id": "8", 
         "band_id": "1", 
         "event_id": "8", 
         "created": "2012-05-23 15:53:57", 
         "modified": "2012-05-23 15:53:57" 
        }}] 

      }}] 
    } 


    var prop; 

    for (prop in data) { 
     console.log(data[prop]); 
     // data.Event.description 
    } 

});​ 

回答

1

这应该做你想要什么:

for (var i = 0; i < data.data.length; i++) { 
    console.log(data.data[i].Event.description);   
} 

我要补充一点,你的代码不起作用的原因是,“prop”变量首先是“status”,然后是“code”,然后是“message”,然后是“data”。状态/代码/消息没有“Event”属性,因此如果您尝试访问data[prop].Event,那么您的代码将返回undefined。在这里我们特意挑选它们。而且由于data.data是一个数组,所以没有理由使用循环,而只是一个普通的for循环。

同样的,如果你想打印出来的描述和乐队,你可以做到以下几点:

for (var i = 0; i < data.data.length; i++) { 
    console.log(data.data[i].Event.description + " has the following bands:"); 
    for (var j = 0; j < data.data[i].Event.Band.length; j++) { 
     console.log(data.data[i].Event.Band[j].name); 
    }  
} 
+0

我会建议在存储的阵列和循环:'为 (VAR事件= data.data,i = 0,n = events.length; i mplungjan