Javascript:从字符串初始化变量?

标签 javascript arrays string google-maps variables

我正在使用 Google map ,需要创建三个以上的图 block 叠加层。一个例子:

平铺叠加

var parkingOptions = {                     //Parking Overlay
    getTileUrl: function(coord, zoom) {
        return "/maps/tiles/tilesparking/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
    },
    tileSize: new google.maps.Size(256, 256)
};

var parkingMapType = new google.maps.ImageMapType(parkingOptions);

但是,为了避免因缺少映射范围之外的图 block 而出现 404 错误,我的代码稍微复杂一些;因此,我打算创建一个循环,将分配给每个覆盖层的特定关键字(此处给出为“ parking ”)插入到上面的代码中。因此:

For 循环

var tileNames = ["base", "parking", "access"];

for (var i = 0; i < tileNames.length; i++) {
    //insert Tile Overlay code here
};

但是,我有一个特殊问题:我无法找到一种方法从tileNames数组中获取字符串并使用它们来初始化Tile Overlay代码中的两个变量。理想情况下,我希望实现这样的目标:

尝试 1

var tileNames[1] + "Options" = {  //ideally: var parkingOptions = {
    //insert remaining code
};

但是这不起作用,我也没有真正期望它起作用。也不会尝试创建这些完整的字符串并将其插入初始化中:

尝试 2

var newOptions = tileNames[1] + "Options";
var newOptions = {
    //insert remaining code
};

那么,有没有办法将字符串放入初始化变量中?


注意:我已将我自己的问题替代解决方案作为答案。它应该可以工作,但它会破坏变量的名称并用一个不伦不类的数组变量替换它。我最好保留描述性变量名称,因为它们经常用于在结果代码中添加和隐藏覆盖层。


解决方案 无论如何,对于这个问题...

var tileNames = ["beloit", "parking", "access"];
var mapType = {};

for (var i = 0; i < tileNames.length; i++) {
    var tileOptions = {
        getTileUrl: function(coord, zoom) {
            return "/maps/tiles/tiles" + tileNames[i] + "/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
        },
        tileSize: new google.maps.Size(256, 256)
    };
    mapType[tileNames[i]] = new google.maps.ImageMapType(tileOptions);
};

难题的另一部分,getTileUrl 函数中的“tileNames[i]”未定义,因为该函数在执行时需要它,而不是将名称字符串放入函数中;然而,这是一个新问题:Javascript: Making a variable static when defining a function in a loop?

最佳答案

你不能这样做:

var tileNames[1] + "Options" = {
  //insert remaining code
};

但你可以这样做:

window['a'] = 'b';
alert(a); // shows 'b'

或者如果你在一个函数中

this['a'] = 'b';

编辑:

var obj = {};
obj.a = 'a';
// obj.a == obj['a']
alert(obj['a']) // alerts a

关于Javascript:从字符串初始化变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211940/

相关文章:

javascript - 操作内存中 jQuery 对象的 textarea 值

javascript - 是否可以检测元素的样式只是浏览器默认样式还是由样式表或内联样式设置?

javascript - 将全局变量的引用传递给函数

java - 从MySQL读取数据到eclipse中

string - 如何在 F# 中使用 printf/sprintf 将十进制格式化为具有定义精度的字符串?

javascript - 如何使用 jQuery 根据某些条件获取 HTML 表的下一行?

java - 安卓/Java : Check if arraylist is empty and then launch another activity

c - 在 C 中将 char 指针分配给 char 数组

javascript - 如何在不使用索引器(javascript)的情况下访问数组的元素?

algorithm - 修剪 <= 2 个字符的字符串