在JavaScript中创建一个双数组

时间:2018-03-28 02:59:18

标签: javascript

我还不习惯语法。如何将rect放入双数组?在我使用的编程语言中,您可以将形状放入双数组中,如下所示:

box[i][j] = Shapes.AddRectangle(GraphicsWindow.Width/10, GraphicsWindow.Height/10)

这是我的HTML / JavaScript代码:

var cnv = document.getElementById("canvas");
var ctx = cnv.getContext('2d');
var width = cnv.width;
var height = cnv.height;
var size = 10;
var box[][] = new rect[width / size][height / size];

function drawGrid() {

  var i = null;
  var j = null;
  for (i = 1; i <= width / size; i++) {
    for (j = 1; j <= height / size; j++) {
      box[i][j] = ctx.rect((i - 1) * size, (j - 1) * size, size, size);
      ctx.fillStyle = 'red';
      ctx.fill();
    }
  }
  return;
}
drawGrid();
<html>

  <head>

    <body>
      <canvas id="canvas" width="250" height="250" style="border: 1px solid black;">
      </canvas>
    </body>

    <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  </head>

</html>

2 个答案:

答案 0 :(得分:0)

我认为你所遇到的问题是寻找“双阵” - 而不是 多维数组

或更具体地说 二维数组

这是一个涵盖该主题的现有页面: How can I create a two dimensional array in JavaScript?

所以在你的情况下看起来像这样:

var box = [];
box.length = width / size;
for (var i = 0; i < box.length;++i){
  box[i] = [];
  box[i].length = height / size;
}

但是,它只是一个填充空值的二维数组。

答案 1 :(得分:0)

在Javascript中,不使用T [][] var语法创建多维数组。相反,最常见的方法可能是在初始化时使它们如下:

var obj = [ 
    [
        { x: 60, y: 10 }, // obj [0] [0]
        { x: -5, y: 40 }  // obj [0] [1]
    ], 
    [ 
        { x: 10, y: 20 }  // obj [1] [0]
    ] 
];

console.log (obj [0] [0].x); // 60
console.log (obj [1] [0].y); // 20

或者您可以像上面尝试的那样在循环中动态填充它。

我对你的代码进行了一些内务处理,但这里有一个fiddle,它会生成你的网格,然后将所有坐标数据放入一个对象中。但请注意,对象开始为空,数据将添加到循环中的对象中。

您可以打开控制台以查看坐标矩阵的样子。