我还不习惯语法。如何将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>
答案 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,它会生成你的网格,然后将所有坐标数据放入一个对象中。但请注意,对象开始为空,数据将添加到循环中的对象中。
您可以打开控制台以查看坐标矩阵的样子。