2016-10-25 5 views
0

Dies ist eine Frage einer Erweiterung einer zuvor gestellten Frage. Ich habe Daten in der ngOnInit siehe unten und diese Felder sind nicht das gleiche wie das Markers-Objekt.Typescript Anfügen vorhandener Daten von http Überschreiben eines vorhandenen Objekts

Daten aus http get in meinem data.service.ts Anhängen an

items:any = []; 

ngOnInit() { 
    this.dataService.fetchData(this.slug) 
     .subscribe(
      (data) => { 
       this.checkData(data);//in this function its going to be appending to this.items 
     } 
    ); 
} 


checkData(data) { 
    if (data.length === 0) { 
     return this.router.navigate(['']); 
    } 
    return this.items = data; 
} 

markers =[ 
    { 
     lat: 51.673858, 
     lng: 7.815982 
    }, 
    { 
     lat: 51.373858, 
     lng: 7.215982 
    }, 
    { 
     lat: 51.723858, 
     lng: 7.895982 
    } 

]

So wie kann ich die vorhandenen Markierungen Objekt mit meinem this.items Objekt überschreiben (in diesem Objekt lat ist und lng verfügbar).

removing qoutes

awnser korrekt war aus @Eric N und machte die marker.latitude und marker.longitude parseFloat().

+0

Können Sie dem Array anfänglicher Markierungsdaten zuerst Elemente zuweisen? Dann kann Ihre checkData-Funktion Elemente neu zuweisen und sie effektiv überschreiben. –

+0

@EricN aber wie kann ich diese überschreiben? Das Elementarray enthält nicht identische Felder. Sein Name, Längen- und Breitengrad. – Bas

Antwort

1

Oh, ist Ihre App Zuordnung zu markers.lat und markers.lng, aber Sie erhalten data.latitude und data.longitude? Es wäre viel sauberer, wenn Sie Ihre Marker und App so ändern, dass dieselben Schlüssel wie für Ihre Datenquelle verwendet werden. Wenn Sie jedoch zwei Arten von Datenobjekten verwenden, können Sie die empfangenen Daten mit den richtigen Schlüsseln einem neuen Objekt zuordnen.

let newItems:any[] = []; 

for (var element in data) { // map over the data type 
    let marker = data[element]; 
    newItems.push(
    { 
     lat: marker.latitude, // create new objects matching the keys used in the app 
     lng: marker.longitude 
    } 
} 

this.items = newItems; // and assign 
+1

Oder einfach 'this.items = data.map (m => {lat: m.latitude, lng: m.longitude});' –

+0

Zu früh am Morgen für intelligente Mapping-Funktionen =) –

+0

es gibt ein Objekt und die lat en lng sind string, wie kann ich sie als nummer machen? – Bas

Verwandte Themen