2017-01-17 8 views
-3

私はカメラの仕様を含む配列を持っていますが、要素を取得するためにforループを実行しようとすると問題が発生します。Forループが配列で動作しません(JavaScript、角2)

ここに私の配列の内容です:Forループ

enter image description here

私はインクリメントまたは(let item of myArray)のためのループのための基本的な、forEachのようなループのためのすべての異なる種類を試してみました

は」doesnの実行すると配列の要素の戻り値がありません。

for (let id in elements) { 

     if (typeof elements[id].brands !== 'undefined') { 

     delete this.items; 

     let itemsArray = []; 

     for (let elementData of elements[id].brands) { 

      this.http.get("assets/data/" + elementData + "Reflex.json").map(res => res.json()).subscribe(data => { 

      Array.prototype.push.apply(itemsArray, data); 

      }); 

     } 

     this.items = itemsArray; 

     } 

     if (typeof elements[id].sensorSize !== 'undefined') { 


     } 

    } 

this.itemsが(私はAngular2を使用)、あなたが上に見ることができる配列です)。

+2

おそらく、HTTP呼び出して 'this.items'を得ている、それはあなたのコードがループに到達した時点では未定義です。 – echonax

+0

最も基本的なループを試しましたか? for(let i = 0; i rrd

+0

forループを実行しているコードを追加できますか? –

答えて

0

このコードを試してみると、配列自体を繰り返し処理し、その中のすべての項目をインライン関数のオブジェクトとして返します。

this.items.forEach(function (item) 
{ 
item.xxx=11; 
}); 
+0

OPはすべてのタイプのforループを試しました..質問を読む –

+0

私の携帯電話で回答を編集し始めたとき、まだ投稿がなかったので、誰かが同じものを書いているのを知らなかった。 –

+0

@ torazaburo sry..theコメントはMiroに向けられた –

0

この呼び出しはproblem.Itが非同期です。

forループは、データをitemArrayにプッシュする応答を待機しません。配列を取得する ラフな方法は次のとおりです。

 this.http.get("assets/data/" + elementData + "Reflex.json").map(res => res.json()).subscribe(data => { 

     Array.prototype.push.apply(this.items, data);//make sure this.items is set to empty previous to call 

     }); 
関連する問題