Typescript附加来自http的现有数据来覆盖现有对象

时间:2016-10-25 11:49:15

标签: angular typescript

这是前面提到的问题的延伸问题。 我在ngOnInit中有数据见下文,这些字段与标记对象不同。

来自http的数据在我的data.service.ts中附加到

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
  }

那么如何用my.items对象覆盖现有的marker对象(在这个对象中是lat和lng可用)。

removing qoutes

Awn在@Eric N中是正确的,并且使用了marker.latitude和marker.longitude parseFloat()。

1 个答案:

答案 0 :(得分:1)

哦,你的应用程序映射到markers.lat和markers.lng,但你正在接收data.latitude和data.longitude?更改标记和应用程序以使用与数据源相同的密钥会更加清晰。但是如果您使用两种类型的数据对象,则可以使用正确的键将接收到的数据映射到新对象。

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