Javascript 数组查找对象或元组

标签 javascript arrays tuples associative-array

我正在为 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/

相关文章:

javascript - 为什么 JS Fiddle 给我错误 `Uncaught TypeError: undefined is not a function ` ?

javascript - 查找带有滚动条的页面中显示了哪些元素(div)

ruby - 如何创建从多个数组中选择的单个元素的每个组合?

sql - 在 plpgsql (postgres) 中创建多维 varchar/text 数组

c# - 在我的 C# 代码中使用 .NET 4.0 元组是一个糟糕的设计决策吗?

javascript - 在初始页面加载时保持 MooTools Accordion 关闭

javascript - 如何在浏览器中使用ethereumjs-tx

javascript - 重命名数组中多个相同的匹配项

python - reduce(x+y, xs) 和 sum(xs) 在 python 中不等价?

python - 比较字典中列表的值