0

「イベント」内の説明キー/値にアクセスするために for..in ループを使用しようとしていますが、現時点ではこれを達成する方法が完全にはわかりません。まず、for..in を使用してこれをログアウトしました。これにより、応答のすべての最上位エントリが返されます。ドリルダウンして Event.description を選択するにはどうすればよいですか? 最初は data[prop].Event.description だと思っていましたが、そうではありません。通常の for ループを使用してから、この内部で for..in を使用する必要がありますか?

これが私の現在のコードです:

$(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 
    }

});​
4

1 に答える 1

1

これはあなたが望むことをするはずです:

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

コードが機能しない理由は、" prop" 変数が最初に " status"、次に " code"、次に " message"、THEN " data" であることです。ステータス/コード/メッセージには「イベント」プロパティがないため、アクセスしようとすると、コードは未定義を返しますdata[prop].Event。ここではそれらを具体的に取り上げます。また、data.data は配列であるため、for .. inループを使用する理由はなく、通常の 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); 
    }       
}
于 2012-06-07T08:50:48.387 に答える