Javascript 如何将字符串转换为对象引用或向对象引用名称添加数值?

Javascript 如何将字符串转换为对象引用或向对象引用名称添加数值?,javascript,leaflet,Javascript,Leaflet,我的问题应该相当直截了当 如果有助于解释的话,我目前正在使用一个名为传单的javascript库。这个库允许我创建一个可自定义的在线地图,我可以添加标记,这就是我现在正在做的: var iconId = null; for (var i=1;i<4;i++) { iconId = "mapMarker" + i; // L.marker does not accept this because it is a string and not an object var marke

我的问题应该相当直截了当

如果有助于解释的话,我目前正在使用一个名为传单的javascript库。这个库允许我创建一个可自定义的在线地图,我可以添加标记,这就是我现在正在做的:

var iconId = null;

for (var i=1;i<4;i++)
{ 
  iconId = "mapMarker" + i; // L.marker does not accept this because it is a string and not an object
  var marker = L.marker([boulder.latitude, boulder.longitude], {icon: iconId}).addTo(map);
}
如您所见,我当前有一个循环,该循环创建了一个字符串,其中包含要传递到icon参数的对象的名称,但icon参数需要的是一个对象,而不是字符串。有没有一种方法可以动态创建对象名并将它们放入“iconId”中?我不想把它放在开关柜里,因为它太大了,不合我的口味


谢谢

每当您发现自己创建了一系列具有相似名称和名称中递增数字的变量时,您应该使用JavaScript中专门为此目的而设计的功能:数组

创建地图标记数组,而不是编号的变量:

var mapMarkers = [
    L.icon({
        iconUrl: 'img/mapMarker1.png'
    }),
    L.icon({
        iconUrl: 'img/mapMarker1.png'
    }),
    L.icon({
        iconUrl: 'img/mapMarker1.png'
    })
];
现在只需遍历该数组:

for( var i = 0;  i < mapMarkers.length;  i++ ) { 
    var marker = L.marker(
        [ boulder.latitude, boulder.longitude ],
        { icon: mapMarkers[i] }
    ).addTo( map );
}
for(var i=0;i
可能重复的,好极了,迈克!你能解释一下如何使用for循环来创建mapMarkers数组吗?我一直在尝试,但我对语法有点困惑。
for( var i = 0;  i < mapMarkers.length;  i++ ) { 
    var marker = L.marker(
        [ boulder.latitude, boulder.longitude ],
        { icon: mapMarkers[i] }
    ).addTo( map );
}