Javascript 使用for循环生成具有属性的动态命名变量

Javascript 使用for循环生成具有属性的动态命名变量,javascript,Javascript,我有以下代码: var imageLocations = [["grass", "grs.gif"], ["wood", "wd.gif"], ["sand", "snd.gif"]]; for (var i = 0; i < imageLocations.length; i++) { tiles[imageLocations[i][0]] = new Image(); tiles[imageLocations[i][0]].src = imag

我有以下代码:

var imageLocations = [["grass", "grs.gif"], ["wood", "wd.gif"], ["sand", "snd.gif"]];

for (var i = 0; i < imageLocations.length; i++) {
          tiles[imageLocations[i][0]] = new Image();
          tiles[imageLocations[i][0]].src  = imageLocations[i][1];
          console.log(tiles);
};
我得到的实际输出:

tiles.grass = [0, "grs.gif"];
tiles.wood = [1, "wd.gif"];
etc.

我的问题是如何防止数组索引也被添加到对象属性中?为什么src属性被忽略了?

不确定那里发生了什么,但下面的代码对我很有用:

var imageLocations = [["grass", "grs.gif"], ["wood", "wd.gif"], ["sand", "snd.gif"]];

var tiles = {};

for (var i = 0; i < imageLocations.length; i++) {
          tiles[imageLocations[i][0]] = new Image();
          tiles[imageLocations[i][0]]['src']  = imageLocations[i][1];          
};

console.log(tiles);
var-imageLocations=[[“草”、“grs.gif”]、[“木”、“wd.gif”]、[“沙”、“snd.gif”];
var tiles={};
对于(var i=0;i
工作示例:


我无法复制
tiles
成为一个对象,其中包含
HTMLImageElement
实例以及您想要的
src
。适合我!我正在为
tiles.grass
获取一个图像元素。这无法工作,因为您试图使用带有键值对的数组
[]
,它应该是一个对象
{}
@something,因为数组是对象,所以它可以工作。但确实,
{}
会更好。@something这里它确实有效,但你是对的,我搞砸了,你的解决方案是什么?我看不出有任何有意义的区别。
['src']
语法与
.src
相比没有任何好处,而且不必要的冗长。@Whathaveyoutried是的,我想这不会真的引发错误,因为javascript只是根据需要对其进行建模,但严格来说可能无法工作。不过,它确实有效。眯着眼睛看,解决方案是用qdding-stqrting-vqriqble存储所有内容。我想。否则没有区别,没有。。。
var imageLocations = [["grass", "grs.gif"], ["wood", "wd.gif"], ["sand", "snd.gif"]];

var tiles = {};

for (var i = 0; i < imageLocations.length; i++) {
          tiles[imageLocations[i][0]] = new Image();
          tiles[imageLocations[i][0]]['src']  = imageLocations[i][1];          
};

console.log(tiles);