2017-07-30 49 views
2

我有一个可观察其返回我喜欢对象的数组:地图及滤波器observabes

0:Object 
    id:1 
    id_room:1 
1:Object 
    id:2 
    id_room:1 
2:Object 
    id:3 
    id_room:1 

我试图使用find方法来查找例如,仅该对象谁拥有ID = 1,所以:

getPlaces(): Observable<Place> { 
    return this._http 
     .get('./../../assets/api/places.json') 
     .map((res: Response) => res.json()); 
    } 

..和places.json:从我的服务

getPlaceByPlaceId(placeId: number) { 
return this.placesService.getPlaces() 
    .map(place => place) 
    .filter(x => x.id === 1) 
    .subscribe(
    x => { 
     console.log(x); 
    }, 
    err => { 
     console.log(err); 
    } 
    ); 

方法getPlaces

[{ 
     "id": 1, 
     "id_room": 1 
    }, { 
     "id": 2, 
     "id_room": 1 
    }, { 
     "id": 3, 
     "id_room": 1 
    } 
] 

不幸的是,我不知道我在做什么错了。 Console.log不显示任何错误。

回答

0

filter()正在获取整个数组,因此试图过滤array.id不起作用,因为它作为一个整体数组没有id属性。您需要map功能filter函数,您可以在其中测试每个函数。

而不是.filter(x => x.id === 1)我想你想:

.map(item => item.filter(x => x.id === 1)) 

这将产生一个新的阵列只匹配id === 1的项目。

+0

嗯,但现在我在类型'Place'上不存在“Property'过滤器'” – Przemo

+0

等一下 - 您已将您的类型定义为'Observable '但您没有返回“Places of Observable '。你应该改变你的类型来反映一个普通的对象数组。 –

+0

嗯,当我删除这个,它没有改变。我是新的观察对象,可能需要更多的知识:/ – Przemo