我有一个observable,它返回一个对象数组,如:
0:Object
id:1
id_room:1
1:Object
id:2
id_room:1
2:Object
id:3
id_room:1
我正在尝试使用find方法来查找例如id = 1的对象,所以:
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:
getPlaces(): Observable<Place> {
return this._http
.get('./../../assets/api/places.json')
.map((res: Response) => res.json());
}
..和places.json:
[{
"id": 1,
"id_room": 1
}, {
"id": 2,
"id_room": 1
}, {
"id": 3,
"id_room": 1
}
]
不幸的是我不知道我做错了什么。 Console.log没有显示任何错误。
答案 0 :(得分:0)
您的filter()
一次性获取整个数组,因此尝试过滤array.id
不起作用,因为整个数组没有id
属性。您需要将map
个元素输出到filter
函数,您可以在其中测试每个元素。
而不是.filter( x => x.id === 1)
我认为你想要:
.map(item => item.filter( x => x.id === 1))
这应生成一个新数组,其中只包含与id === 1
匹配的项目。