forEach不是Ionic 2的功能

时间:2017-01-18 06:41:06

标签: angular ionic2

即使this.toilets充满了对象,我也收到了这个错误

enter image description here

日志首先显示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);
                });
        });
    }

3 个答案:

答案 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);
                });
        });
    }