2016-06-23 4 views
0

私は今、机の上に頭を叩いています。 私は単純に理解できませんなぜconsole.log()を使用したときに私のオブジェクトがはっきりとわかるときにJSONオブジェクトを反復できません。オブジェクトを反復すると、不思議に不確定なプロパティが取得されます

これは私の現在のループです:

for (var i = 0; i < list.length; i++) { 
    for (var y = 0; y < list[i].information.locations.length; y++) { 
    if (list[i].information.locations[y].city !== '') { 
     newArr.push({ 
     "city": list[i].information.locations[y].city, 
     "country": list[i].information.locations[y].country 
     }); 
    } 
    } 
} 

私に次のエラーを与える:TypeError: Cannot read property 'locations' of undefined

しかし、あなたは私の端末のスクリーンショットから見ることができるように、私ははっきりと情報オブジェクトとの位置配列を持っています内にオブジェクトがあります。

enter image description here

私がしようとした場合:console.log(list[i].information);私だけundefined結果を取得する最初のforループ内。

主な問題は、リスト[i]。情報が未定義であるかのようです。しかし、私はそれが定義されていると思うので、私は私がオブジェクトを使って私のアレイ全体の大きなconsole.logを行うことができます。

これはなぜ起こっているのですか? Tyvm。私の理解で

+1

'console.log(list [i])'の出力は何ですか? – gurvinder372

+0

JSONをJSON.parse()を使ってオブジェクトに変換しましたか? – erdysson

+0

あなたが投稿したコードに問題がないようです。たぶんタイミングの問題?私はあなたが配列をループするとき、オブジェクトはそこにはないが、ある時間後(たぶん、ajax呼び出しが完了した後)にオブジェクトがあることを意味する... – fradal83

答えて

0

奇妙だが他の人には知っておくと便利です。
My .informationオブジェクトは定義されていませんでした。この質問を書いた時点で私のmongooseモデルにはオブジェクトが含まれていなかったためです。

私は明らかに私の配列でそれを見ることができるので、これは本当に奇妙だと思うが、コードのように定義されていない。それは端末にあった。

私はちょうど"information": {}と私のモデルにそれの中に他のものを追加し、すべての風のように働いた。

0

、あなたのコードは、この行で改行されます。

for (var y = 0; y < list[i].information.locations.length; y++) 

同じ構造を持っていないリスト内のオブジェクトがある場合は、それが解除されます。

Sample JSFiddle

あなたはこのような何かを試してみてください:

var len = list[i].information && list[i].information.locations? list[i].information.locations.length: 0; 
for (var y = 0; y < len; y++) { 

Sample JSFiddleを。

+0

これはうまくいきませんでした。私の 'list [i] .information'が' undefined'として返ってきたので動作しないと思うので、最後のfoorループには入りません。 –

+0

@LucasReppeWelanderこれをチェックする[Fiddle](https ://jsfiddle.net/RajeshDixit/u3nsmeuz/2/)。それはもはや投げていないエラーです。 – Rajesh

+0

いいえ、それは何もnewArrという配列に何もプッシュしません。 https://jsfiddle.net/u3nsmeuz/4/とこれを見てください:https://jsfiddle.net/RajeshDixit/u3nsmeuz/2/ 2番目のものは私がconsole.loggedした場所ですあなたはnewArr配列.. –

関連する問題