Javascript数组查找对象或元组
Javascript Array find Object or tuple
我正在为地图上的一些"元素"建立一个运动逻辑。我已经用它们的X和Y位置定义了贴图,现在我需要为贴图分配一个元素。一般来说,我想这样做:[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 * 200的地图,其中包含1px的贴图。为了将每个贴图映射到特定的id(用于快速访问),我创建了一个这样的数组:TileVector["+x+y] = [x+y] 正如所指出的,这不是防弹的
现在,当一个元素被放置在地图上时,我需要将该元素与地图上的位置相关联,因此[x+y] => Element并将其存储在一个全新的数组中
以下内容有什么问题?
TileElementVector[x][y]
你必须像这样初始化数组的两个维度:
TileElementVector = [];
for (var i = 0; i < maxY; i++){
TileElementVector[i] = [];
}
,其中maxY
是Y在这个假设的二维网格中可以取的最大值。就速度而言,这些都不是真正的问题。但是,如果真的想要一维存储数组,可以使用下面这个简洁的数学技巧:
TileElementVector[x * maxY + y]
这将确保每个元素获得唯一的索引。这实际上是"扁平化"数组。但是,由于使用起来有点棘手,我建议使用第一种解决方案。
function toIndex(x, y, rowSize) {
return y * rowSize + x;
}
function fromIndex(idx, rowSize) {
return {
x: idx % rowSize,
y: Math.floor(idx / rowSize)
};
}
var colSize, rowSize;
var TileElementVector = new Array(colSize * rowSize);
var tileIdx = toIndex(xTile, yTile, rowSize);
var coords = fromIndex(tileIdx, rowSize);
coords.x == xTile && coords.y == yTile;
相关文章:
- Javascript函数,用于将数组转换为“;2-元组”;
- 将数组对象传递到struts2中的操作类
- 从函数JavaScript返回不可变数组/对象
- 求和数组对象中的数组值
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 根据值合并不同长度的两个数组对象
- 如何按数组/对象值的倍数过滤对象数组
- 如何将一个对象转换为数组对象
- 在表中显示数组对象
- 通过推送json构建一个数组对象
- Javascript.连接两组对象的最佳方式,如SQL
- 在数组对象中分组
- 使一组对象与 jQuery 一起拖动
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 比较 2 组对象的值
- 我正在通过一个端口从Elm应用程序传递一个元组.JavaScript将接收什么类型的对象
- Javascript数组查找对象或元组
- 如何循环遍历数组对象并检查每个元素以查看是否定义了一个元素