我有一个包含摄像头规格的数组,当我尝试运行for循环来获取元素时会出现问题。
以下是我的数组的内容:
我尝试了所有不同类型的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))。
答案 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
});