【问题标题】:How to supply unique ids to elements within a 2D array?如何为二维数组中的元素提供唯一 ID?
【发布时间】:2012-01-30 09:36:31
【问题描述】:

我对 javascript 很陌生,我遇到过需要以编程方式为二维数组中的每个元素提供唯一 ID 的情况。我之前问过这个问题,但我犯了一个错误,没有指定数组的结构并收到了适合一维数组的答案。我的数组的结构如下,如果知道如何为数组中的每个元素创建唯一的 ID,那就太好了:

 var startRow = Math.floor(scroll.x / alpha.width);
                   var startCol = Math.floor(scroll.y / alpha.height);
                   var rowCount = startRow + Math.floor(canvas.width / alpha.width) + 2;
                   var colCount = startCol + Math.floor(canvas.height / alpha.height) + 2;

                   rowCount = ((startRow + rowCount) > grid.width) ? grid.width : rowCount;
                   colCount = ((startCol + colCount) > grid.height) ? grid.height : colCount;


                   for (var row = startRow; row < rowCount; row++) {
                       for (var col = startCol; col < colCount; col++) {
                           var tilePositionX = alpha.width * row - 25;
                           var tilePositionY = alpha.height * col + 45;

非常感谢

另外,这是我之前收到的回复:JavaScript array id loop

【问题讨论】:

  • 您提供的代码中没有数组(没有一维数组或二维数组)。您希望在哪里设置 id?
  • @BenLee - 看起来他正在以编程方式创建数组(rowCount、colCount 等):)

标签: javascript arrays canvas 2d


【解决方案1】:

就像您上一个问题所说的那样,您为什么不直接参考索引 - 它是完全独一无二的。 2D 数组将具有 [i][j] 索引,不能被多个项目占用。

var startRow = 0;
var startCol = 0;
var rowCount = 10;
var colCount = 5;
var someArray = [];

for (var row = startRow; row < rowCount; row++) {
   someArray[row] = [];
   for (var col = startCol; col < colCount; col++) {
       someArray[row][col] = row + ' ' + col;
   }
}

【讨论】:

  • 抱歉,该数组称为 tileMap 并设置为 var tileMap = [];我在 Havvy 的迭代解决方案中取得了一些成功: for (var ix = 0; ix
  • 我很困惑为什么需要将数组的内容存储在另一个数组中。整个数组的一般用途是什么?
  • 感谢您的宝贵时间 Aram,该数组用于在 html5 画布上绘制基于图块的游戏板,因此该数组的结构用于在浏览器窗口中绘制 2D 游戏板。使用 id 的原因是,可以通过从数据库中读取颜色值来更改特定图块(数组中的单元格)的颜色。
  • 在这种情况下,我会创建一个方法来接收图块 (i,j) 坐标和颜色,并将此颜色应用于图块(如果存在)。如果你只存储颜色,那么它可以是十六进制颜色字符串的形式。
猜你喜欢
  • 2012-01-18
  • 2011-05-12
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多