我正在为 map 上的某些“元素”构建移动逻辑。 我有由 X 和 Y 位置定义的图 block ,现在我需要将一个元素分配给图 block 。 一般来说,我想做这样的事情:[0,1] => ElementX,然后将其存储到“某物”中。
但是,使用 JavaScript 数组,我无法执行“某事”。indexOf [0,1] 或 ElementX(它是一个对象)或事件 ElementXId。
所以我最终做的是这样的:
TileVector["" + x + y] = [x,y] //translates to TileVector["6060"] = [60,60]
和
TileElementVector["" + x + y] = ElementX;
现在,当我想查看特定坐标上的内容时,我只需将 x 和 y 坐标串起来即可。
我只是想知道这有多糟糕或多慢以及是否有其他解决方案。
谢谢。
我将详细说明如何使用它。 创建了 200 x 200 的 map ,其中包含 1 像素的图 block 。为了将每个图 block 映射到特定的 ID(以便快速访问),我创建了一个如下所示的数组:TileVector[""+x+y] = [x+y] 正如指出的那样,这不是防弹的嗯>
现在,当一个元素放置在 map 上时,我需要将该元素与 map 上的该位置关联起来,因此 [x+y] => 元素并将其存储在一个全新的数组中。
最佳答案
以下内容有什么问题吗?
TileElementVector[x][y]
您必须像这样初始化数组的两个维度:
TileElementVector = [];
for (var i = 0; i < maxY; i++){
TileElementVector[i] = [];
}
其中 maxY
只是 Y 在这个假设的二维网格中可以呈现的最大值。
就速度而言,这些都不是真正的问题。但如果您确实想要一维存储数组,您可以使用这个巧妙的数学技巧:
TileElementVector[x * maxY + y]
这将确保每个元素都有唯一的索引。这本质上是“展平”数组。但是,由于这使用起来有点棘手,所以我推荐第一个解决方案。
关于Javascript 数组查找对象或元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31865624/