2011-11-27 19 views
0

とネストされたJSONを反復処理は、私はこのようなJSON内のオブジェクトの大規模なリストを持っている:4eae1aa12efa83745d00000bスタイルキーがランダムでのjQuery:独自のキー名

var data = { 
    4eae1aa12efa83745d00000b: { 
     location: "office", 
     latLong: [ 
      40.7069546, -74.0094471 
     ], 
    }, 
    4eae1aa12efa83745d000000: { 
     location: "home", 
     latLong: [ 
      42.3584308, -71.0597732 
     ] 
    } 
    }; 

。それぞれのネストされたJSONオブジェクトの位置とlatLong配列を印刷するには、JSONを反復処理するにはどうすればよいですか?

は、私が試した:

$.each(data, function() { 
     $.each(this, function() { 

     console.log(this.location); 

     }); 
}); 

をそれは何も返さない

答えて

1

あなたがオブジェクト/配列内のアイテムを翻訳すること$.map functionを調べる必要があります - このような何かのために行く:

$.map(data, function(val, i){ 

    console.log(val.location); 
    console.log(val.latLong[1]); 
    console.log(val.latLong[2]); 

}) 

私はそれがとにかく後になっていると思います。

+0

これは完全に機能しました。ありがとうございます – alyx

+0

心配する必要はありません、私は助けることができてうれしいです。 –

+0

@ christian.thomas '$ .map'ではなく' $ .each'です。配列やオブジェクトを反復するには '$ .each'を使います。オブジェクトの配列/プロパティ値の要素を置き換えるには、 '$ .map'を使います。 –

0

オブジェクトのプロパティをループオーバーしようとしています。これを行うには:

for(var prop in obj) { 
    if(obj.hasOwnProperty(prop)) 
     // do something with obj[prop].latLng 
} 

です。

1

あなたの唯一の問題は、内側のループが必要ないことです。

$.each(data, function(id, value) { 
    console.log(value.location); 
}); 
関連する問題