2017-07-30 52 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