我试图创建一个构建棋盘格的功能,但是我无法获得第二个条件语句来执行并创建一个新行。
function grid(size) {
var board = "";
for (i = 0; i <= (size * size); i++) {
if (i % 2 === 0) {
board += ' ';
} else if (i % size === 0) {
board += "\n";
} else {
board += '#';
}
}
console.log(board);
}
grid(8);
&#13;
看来else if语句没有执行,因为我已尝试更改&#39; \ n&#39;和其他东西的条件,但没有打印。这个问题来自Eloquent Javascript,给出的解决方案是:
var size = 8;
var board = "";
for (var y = 0; y < size; y++) {
for (var x = 0; x < size; x++) {
if ((x + y) % 2 == 0)
board += " ";
else
board += "#";
}
board += "\n";
}
console.log(board);
&#13;
我不确定为什么第二个有效但我的没有。
答案 0 :(得分:2)
i % 2
将始终执行,而不是i % (8 * 8)
。您应该更换订单或从第二个else
中删除if
。
答案 1 :(得分:2)
让我们分析您的代码:
if(i % size === 0)
这意味着,当i等于0或是大小的倍数时。在你的情况下,大小是8。
因此,对于你的触发器,我应该是0,8,16,32 ......
在所有这些情况下,它永远不会触发,因为当我是0,8,16,32 ... i%2是0时,所以它将运行第一个if而不是第二个。您应该颠倒ifs的顺序或同时运行