2016-09-04 13 views
0

JavaScriptがありますobjectです。 はrgInventory.(someid).classidになり、常にundefinedになります。JavaScriptオブジェクトから情報を取得

私のコード(アイテムは私の物です):

for (var i = 0; i < Object.keys(items.rgInventory).length; i++) { 
    console.log(items.rgInventory[i].classid); 
} 
+0

それは単に、デバッガに関連する変数を調べることによっておよそ10秒で解決されている可能性がありタイプミスは、だ@bluetoft。これは、「役に立たない」というテキストブックの定義です。 –

+0

console.log(items.rgInventory ['1908569708'] .classid); –

答えて

2

iはキーではなく、そのキーのシーケンス番号です。

にコードを変更し

for (var key of Object.keys(items.rgInventory)) { 
    console.log(items.rgInventory[key].classid); 
} 

for...in構文は、オブジェクトキーを反復のためのより適切である:

for...of構文で、それは次のようにコーディングすることができることを

var keys = Object.keys(items.rgInventory); 
for (var i = 0; i < keys.length; i++) { 
    console.log(items.rgInventory[keys[i]].classid); 
} 

注意

for (var key in items.rgInventory) { 
    console.log(items.rgInventory[key].classid); 
} 

を設定するための素晴らしい第二引数でコールバック、:

Object.keys(items.rgInventory).forEach(function (key) { 
    console.log(this[key].classid); 
}, items.rgInventory); 
+2

ダウンリストに問題の内容を説明してください。 – trincot

+0

私は 'for ... of'を好きですが、この場合は' for(items.rgInventoryにキーを入れます ')と同じではありません。 –

+0

@torazaburo、それらは異なっていて、異なる目的を持っています: 'for ... of'はキーの値を与え、' for ... in'はそれらのシーケンス番号(すなわち、0,1,2、.. 。)、これはあまり役に立ちません。 – trincot

-1

問題ではなく、Object.keys(items.rgInventory)[i]

の、あなたは、ルックアップとしてi変数を使用していることである。この方法を試してください。

for (var i = 0; i < Object.keys(items.rgInventory).length; i++) { 
    console.log(items.rgInventory[Object.keys(items.rgInventory)[i]].classid); 
} 

しかし、これはおそらくあなたがこのルックアップをしたいのではありません...これは少しきれいです:

Object.keys(items.rgInventory).forEach(function(key) { 
    console.log(items.rgInventory[key].classid) 
}) 
+0

downvoterはすべての答えで彼の問題を説明できますか? – bluetoft

関連する問題