gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:08:15 26 4
gpt4 key购买 nike

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

图 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com