JS - 遍历一个对象数组并使用值来创建变量

时间:2016-06-29 00:58:11

标签: javascript loops object

如果我构建一个对象数组。

var destinations = [{
  id:   '277',
  title:'Alicante',
  lat:  '38.35782',
  lng:  '-0.5425632',
  content:  '<p>string</p>'
},{
  id:   '275',
  title:'Amsterdam',
  lat:  '52.3745292',
  lng:  '4.7585347',
  content:  '<p>string</p>'
},{
  id:   '250',
  title:'Belfast',
  lat:  '36.1673368',
  lng:  '27.6853392',
  content:  '<p>string</p>'
}, {
  id:   '263',
  title:'Bergerac',
  lat:  '44.8519854',
  lng:  '0.4532777',
  content:  '<p>string</p>'
}]

如何使用循环并使用数据创建变量名称和属性?什么是迭代数组并创建变量的函数(我用来填充Google Map)。我正在阅读这么多代码示例,但我似乎无法做到正确。

我希望以下函数可以创建四个变量(marker277,marker275,marker250,marker263),其位置以类似的方式从数组中的对象获取,但它不起作用。

for (var i = 0, l = destinations.length; i < l; i++) {
  var obj = destinations[i];
  var marker[obj.id] = new google.maps.Marker({
    position: {lat: obj.lat, lng: obj.lng}
  });
}

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

好吧,我认为标记lat long期望浮点值,所以你应该尝试使用parseFloat()。此外,您应该将标记存储在数组中以保留它,就像这样。

var markers = [];
for (var i = 0, l = destinations.length; i < l; i++) {
  var obj = destinations[i];
  var lat = parseFloat(obj.lat);
  var long = parseFloat(obj.lng);
  markers[obj.id] = new google.maps.Marker({
    position: {lat: lat, lng: long}
  });
}

答案 1 :(得分:0)

您的代码不会创建变量名称,但会尝试将标记设置为数组标记。你很可能想要有标记的地图

var markers = {};
for (var i = 0, l = destinations.length; i < l; i++) {
  var obj = destinations[i];
  markers[obj.id] = new google.maps.Marker({
    position: {lat: obj.lat, lng: obj.lng}
  });
}