即使this.toilets充满了对象,我也收到了这个错误
日志首先显示this.location,然后是this.toilets,其中包含所显示的对象。
#if (_WIN32_WINNT >= 0x0602 /*_WIN32_WINNT_WIN8*/)
this.loadHomeData().then(data => {
this.toilets = data;
console.log(this.toilets);
});
loadHomeData() {
return new Promise(resolve => {
this.http.get('http://url-to-my-server/' + this.location.coords.latitude + '/' + this.location.coords.longitude)
.map(res => res.json())
.subscribe(data => {
this.data = data;
resolve(this.data);
});
});
}
答案 0 :(得分:16)
forEach正在使用数组而不是对象。
您需要获取密钥然后重复
Object.keys(this.toilets).forEach(key=> {
console.log(this.toilets[key]) ;
});
答案 1 :(得分:4)
由于this.toilets是一个包含对象的对象.forEach()可能不起作用。 相反,您可以使用:
for(var i in this.toilets){
console.log(this.toilets[i]);//This will print the objects
console.log(i);//This will print the index of the objects
}
答案 2 :(得分:1)
或者您可以使用.do运算符
loadHomeData() {
return new Promise(resolve => {
this.http.get('http://url-to-my-server/' + this.location.coords.latitude + '/' + this.location.coords.longitude)
.map(res => res.json())
.do(res => console.log('All: ' + JSON.stringify(res)))
.subscribe(data => {
this.data = data;
resolve(this.data);
});
});
}