我需要一个双循环来产生一系列的值。这是为我正在尝试制作的迷宫生成程序(使用 DFS 方法)寻找相邻单元格的一部分。这是一些伪代码:
var values = [];
for (...) {
for (...) {
values.push([i, j]);
}
}
循环运行后,“值”应该是[[0, 1], [0, -1], [1, 0], [-1, 0]]
谢谢您的帮助!
我需要一个双循环来产生一系列的值。这是为我正在尝试制作的迷宫生成程序(使用 DFS 方法)寻找相邻单元格的一部分。这是一些伪代码:
var values = [];
for (...) {
for (...) {
values.push([i, j]);
}
}
循环运行后,“值”应该是[[0, 1], [0, -1], [1, 0], [-1, 0]]
谢谢您的帮助!
for (var i = -1; i < 2; i++) {
for (var j = -1; j < 2; j++) {
if (Math.abs(i) + Math.abs(j) == 1)
values.push([i, j]);
}
}
好。你的确切结果可以这样实现:
var seed_values = [1, -1, 0, 0];
var values = [];
for (var i = 0; i < 4; i++) {
values.push([seed_values[i], seed_values[(i+2)%4]]);
}
您的数组中没有真正的结构,因此循环只会使其过于复杂。使用您已有的数组文字。
如果是[[0, 1], [1, 0], [0, -1], [-1, 0]]
,这可以帮助您:
for (var values=[], i=0; i<Math.PI*2; i+=Math.PI/2)
values.push([Math.cos(i), Math.sin(i)]);
…但不幸的是,它不能计算精确的零点,只能计算非常接近的值 - 你也必须Math.round
.
对于你的数组和嵌套循环结构,我只能想到
var values = [];
for (var i=0; i<2; i++) {
for (var j=1; j>=-1; j-=2, i*=-1) {
values.push([i, +!i && j]);
}
}
丑陋,不是吗?但它确实运行了两个嵌套循环,每个循环两次:-)