使用 Javascript 中的字符串构建网格

Building a grid using a string in Javascript

我一直在研究 JavaScript 教科书,并进行了一些初步练习。我目前正在自学。

一个练习要求使用“#”创建一个 8 X 8 的板。我做的很简单,并且能够制作出书本的样子,然后我查看了答案。我有几个关于逻辑的问题

let board2 = " # # # #\n# # # #";
for (let n = 0; n < 4; n++) {
  console.log(board2);
}

这本书做了以下事情

let size = 8;

let board = "";

for (let y = 0; y < size; y++) {
  for (let x = 0; x < size; x++) {
    if ((x + y) % 2 == 0) {
      board += " ";
    } else {
      board += "#";
    }
  }
  board += "\n";
}

console.log(board);

我的理解是,如果 X 和 Y 坐标之和为偶数,则会在板上添加一个“ ”。你如何达到这个逻辑?是不是字符串中每隔一个位置就有一个space,然后奇数就包含一个“#”?

在 even-numbered 行中,您希望 space 在偶数列中,# 在奇数列中。添加偶数行和偶数列总是产生偶数和,因此当 x + y 为偶数时,偶数列将是偶数。

在 odd-numbered 行中,您想要相反的结果:space 在奇数列中,# 在偶数列中。添加奇数行和奇数列将产生偶数和,因此当 x + y 为偶数时奇数列将是。

所以从这个简单的数学我们可以看出,我们总是想在x + y是偶数时添加一个space,否则添加#,它会交替布局行。

当您可以 hard-code 网格大小时,您的方法很好。书中的方法更为通用——它适用于任何网格大小,并且不依赖于行数是否为偶数。