【问题标题】:Javascript If-Else Statement in For LoopFor循环中的Javascript If-Else语句
【发布时间】:2016-07-04 09:20:19
【问题描述】:

我正在尝试使用 JavaScript 和 Google Maps API 在地图上绘制多个标记;我有一个包含键值对的大型对象数组,如下所示:

xyz: [ { name: 'abc', loc: { lat: 0.000000, lng: 0.000000 } }, ... , ... ]

我有一个循环遍历这个数组并在 xyz.loc 为数组中的每个对象绘制一个标记(见下文)。现在,我正在尝试根据 xyz.name 属性更改用于每个标记的图标。

我已经定义了两个不同的自定义标记图标及其关联的形状(xyzMarkerIcon1xyzMarkerIcon2xyzMarkerShape),我正在尝试使用 If-Else 语句切换使用哪一个,如下所示:

var xyzMarkerIcon = {};
for (i in xyz) {

  if (xyz[i].name = 'abc') {
    xyzMarkerIcon = xyzMarkerIcon1
  }
  else {
    xyzMarkerIcon = xyzMarkerIcon2
  }

  xyzMarkerArray[i] = new google.maps.Marker({
    map: map,
    position: xyz[i].loc,
    icon: xyzMarkerIcon,
    shape: xyzMarkerShape,
  });
}

For 循环运行良好,但第一次迭代后似乎忽略了 If-Else 语句;数组中的所有对象都已成功绘制,但都使用 xyzMarkerIcon 的第一个实例。

我觉得这应该是一个足够简单的问题,但我就是想不通!感谢您的帮助!

【问题讨论】:

  • 那是因为你有 xyz[0].name 作为 abc 然后其他?这就是为什么它被忽视(而不是根本没有被忽视?)
  • xyz[i].name = 'abc' 这是赋值而不是比较,将= 替换为==if (string) 始终为真,因此始终使用第一个图标

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


【解决方案1】:

你忘记了 == 'abc'

var xyzMarkerIcon = {};
for (i in xyz) {

  if (xyz[i].name == 'abc') {
    xyzMarkerIcon = xyzMarkerIcon1
  }
  else {
    xyzMarkerIcon = xyzMarkerIcon2
  }

  xyzMarkerArray[i] = new google.maps.Marker({
    map: map,
    position: xyz[i].loc,
    icon: xyzMarkerIcon,
    shape: xyzMarkerShape,
  });
}

【讨论】:

  • 啊,是的!我以为我错过了一些简单的事情!非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多