如果数组元素在for循环中有条件

时间:2015-02-26 12:17:27

标签: javascript arrays google-maps google-maps-api-3

我在JavaScript中以数组形式返回一系列位置,我正在Google地图上绘图。

我试图根据其中一个数组元素的值更改标记图标的类型

for (i = 0; i < locations.length; i++) {
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
    if (locations[i][3] == "Yes") {
      console.log("yes")
    } else {
      console.log("no")
    }
  });

  google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infowindow.setContent(locations[i][0]);
      infowindow.open(map, marker);
    }
  })(marker, i));
}

但遇到了

Uncaught SyntaxError: Unexpected token (

我错过了什么?

1 个答案:

答案 0 :(得分:2)

  

我错过了什么?

您将流代码放在对象初始值设定项的中间:

for (i = 0; i < locations.length; i++) {
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
    if (locations[i][3] == "Yes") {     // ====
      console.log("yes")                // ====
    } else {                            // ==== Here
      console.log("no")                 // ====
    }                                   // ====
  });

  google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infowindow.setContent(locations[i][0]);
      infowindow.open(map, marker);
    }
  })(marker, i));
}

你做不到。 我不确定你在那里做什么你发表了澄清评论:

  

在新的google.maps.Marker中({我需要能够设置图标:'/ img / a.png'或图标:'/ img / b.png',具体取决于location [i]的值[3]

所以我对属性的猜测是正确的:你可以用条件运算符来做到这一点:

marker = new google.maps.Marker({
  position: new google.maps.LatLng(locations[i][1], locations[i][2]),
  map: map,
  icon: locations[i][3] == "Yes" ? '/img/a.png' : '/img/b.png'
});

...如果icon为真,则'/img/a.png'属性的值为locations[i][3] == "Yes",否则为'/img/b.png'