2017-01-26 2 views
4

Ich arbeite mit Rxjs und eckigen 2 innerhalb eines Dienstes. Ich habe einige JSON, die ich mit einer bekommen konnte Anfrage.Kombinieren Sie zwei Objekte in RxJS

private _campInfoUrl = 'api/campInfo/campInfo.json'; 
    constructor(private _http: Http) { } 

    getAvailableCamps() { 
    return this._http.get(this._campInfoUrl) 
     .map((response: Response) => response.json()) 

An dieser Stelle habe ich alle Daten. Doch um in dieses Objekt

 { 
     "search": { 
     "startDate": "2016-06-07", 
     "endDate": "2016-06-10" 
     }, 
     "reservations": [ 
     {"campsiteId": 1, "startDate": "2016-06-01", "endDate": "2016-06-04"}, 
     {"campsiteId": 1, "startDate": "2016-06-11", "endDate": "2016-06-13"}, 
     {"campsiteId": 2, "startDate": "2016-06-08", "endDate": "2016-06-09"} 
    ] 
} 

das ist, was ich

.map((response: Response) => response.json()) // <IProduct[]> 
    .map((tripDate) => ({ 
    reservations: tripDate.reservations, 
    newRes: tripDate.search // <-- how to add this to every return object 
    })) 

Was ich kämpfe, um herauszufinden, ist eine Möglichkeit, mit rxjs auf, wie zu tun versuchen, nach innen zu erhalten „search“ Reservierung Array von Objekten wie so

"reservations": [ 
{ 
    "campsiteId": 1, 
    "startDate": "2016-06-01", 
    "endDate": "2016-06-04", 
    "searchStartDate": "2016-06-07, 
    "searchEndDate": "2016-06-10 
}, 
{ 
    "campsiteId": 1, 
    "startDate": "2016-06-11", 
    "endDate": "2016-06-13", 
    "searchStartDate": "2016-06-07, 
    "searchEndDate": "2016-06-10 
}, 
{ 
    "campsiteId": 2, 
    "startDate": "2016-06-08", 
    "endDate": "2016-06-09", 
    "searchStartDate": "2016-06-07, 
    "searchEndDate": "2016-06-10 
} 

im Beispiel oben ich habe das Suchobjekt zu jedem Index des Reservierungen Array hinzugefügt.

Ich hatte gehofft, es war eine Frage der Verkettung oder Mapping, um das Array zu transformieren. Ich bin jedoch nicht in der Lage, in jeden Index des Reservierungsarrays zu gelangen

Jeder Einblick in die Navigation dieses JSON-Objekts wäre sehr willkommen.

Antwort

4

nicht sicher, warum Sie nicht „in jedem Index“ bekommen, aber Sie haben nicht zu und man kann sogar dies tun, ohne RxJS:

.map((response: Response) => response.json()) // <IProduct[]> 
    .map((tripDate) => ({ 
    reservations: tripDate.reservations 
     .map(reservation => Object.assign(
     {}, 
     reservation, 
     { 
      searchStartDate: tripDate.search.startDate, 
      searchEndDate: tripDate.search.endDate 
     } 
    ) 
    ) 
    })) 
+0

Jesus Ich kann Ihnen nicht genug danken. Ich habe buchstäblich mit Object.assign und map gearbeitet. Ich dachte nicht daran, es zu nisten. – Winnemucca