for循环不能在数组中工作(Javascript,Angular 2)

时间:2017-01-17 10:47:24

标签: javascript arrays angular

我有一个包含摄像头规格的数组,当我尝试运行for循环来获取元素时会出现问题。

以下是我的数组的内容:

enter image description here

我尝试了所有不同类型的for循环,如forEach,基本for循环增量或for(let item of myArray

For循环没有运行,我没有返回数组中的元素。

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 个答案:

答案 0 :(得分:0)

尝试使用此代码,它将迭代数组本身,并将其中的所有项目作为内联函数中的对象返回。

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

答案 1 :(得分:0)

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

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

  });

此调用是问题。它是异步

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

      });