Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写一个表示8×的程序;8格?_Javascript_Loops_For Loop - Fatal编程技术网

Javascript 编写一个表示8×的程序;8格?

Javascript 编写一个表示8×的程序;8格?,javascript,loops,for-loop,Javascript,Loops,For Loop,这是一本教科书: 编写一个程序,创建一个表示8×8网格的字符串,使用换行符分隔行。网格的每个位置都有一个空格或一个“#”字符。这些字符应构成一个棋盘 棋盘看起来像这样: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 这是我的代码: const lineOne = ' # # # # ' const lineTwo = '# # # #' const chessboard = function()

这是一本教科书:

编写一个程序,创建一个表示8×8网格的字符串,使用换行符分隔行。网格的每个位置都有一个空格或一个“#”字符。这些字符应构成一个棋盘

棋盘看起来像这样:

 # # # #
# # # # 
 # # # #
# # # # 
 # # # #
# # # # 
 # # # #
# # # #
这是我的代码:

const lineOne = ' # # # # '

const lineTwo = '# # # #'

const chessboard = function() {
  console.log(lineOne)
  console.log(lineTwo)
  console.log(lineOne)
  console.log(lineTwo)
  console.log(lineOne)
  console.log(lineTwo)
  console.log(lineOne)
  console.log(lineTwo)
}

console.log(chessboard())
虽然这会输出棋盘,但我可以看出这是非常低效的。写这篇文章的更好方法是什么

教科书上也写着,一旦我写完程序 输出我应该设置绑定的棋盘:size=8,并更改程序,使其适用于任何大小,输出给定宽度和高度的网格

如何做到这一点?有人告诉我,我们需要一个循环中的一个循环,但我想不出来

请记住,我是一个正在学习的新手,所以你解释得越多越好


感谢您的帮助。

循环使代码比实际长度更短

与打印
######
不同,您可以在循环中写入8次,让程序只需写入1次即可打印8次

循环中的
if
条件只会使打印交替进行,使其看起来像一个棋盘

循环从1开始,到8结束。它由变量
i
表示。在这种情况下,我们可以区分奇数和偶数

如果
i
变量是偶数,则
if
条件将打印
lineTwo
,如果
i
变量是奇数,则将打印
lineOne

循环使其更具动态性,因为您只需更改变量
size
表示的循环末尾,该变量当前在
8
上,表示您想要的任何数字

const lineOne='#####
常数lineTwo='#######'
常数大小=8
常量棋盘=函数(){

对于(假设i=1;i在棋盘中,调用每个单元格
a[i,j]
i
是行索引,
j
是列索引

  • i+j
    为偶数的所有单元格均为黑色
  • 所有
    i+j
    为奇数的单元格均为白色
var numberColumns=8;
对于(变量i=0;i
正如你的书中所说,我们可以通过几个
for
循环来实现这一点。我们将有一个行循环(y坐标)和列循环(x坐标)

for循环通常用于执行某个特定次数的操作(从技术上讲,直到满足某个条件为止)。下面是一个示例:

for (let y = 0; y < 8; y++) {
  // Do something
}
外部循环用于行,内部循环用于列。现在,您将在内部循环中看到这一行:

line += ((x+y)%2) ? ' ' : '#';
行开始+=

这意味着我们将获取
变量并将一些数据连接到它。也就是说,由于它是一个字符串,
+=
操作符获取现有的文本数据,并将更多文本放在它的末尾,将其重新分配回
变量

现在,
(x+y)%2

首先,模运算符
%
0%2
0
1%2
1
2%2
0
3%2
1
,依此类推。基本上,除法,余数是什么。在这种情况下,我们添加行
x
,列
yde>这样我们将为每一行交替奇偶值。其结果将是
1
0

((x+y)%2)?“”:“#”

这称为三元。
something?/truthy':“falsy”
表示如果
something
为真(或truthy,如
1
),则返回
'truthy'
。如果不是,则返回
'falsy'
。在我们的例子中,如果行加列为奇数,则返回一个空空格(连接到行)。否则,如果它是偶数,则返回一个
#
(它也连接到该行)


在每个内部循环之后,输出行,然后重新开始。

我认为对于初学者来说,这是最简单的方法

以下是执行此操作的步骤:

  • 用棋盘的
    大小迭代
    2个循环
    。外循环表示
    ,内循环表示
    。 //这里循环迭代(从0到表示从0到7

  • 内环根据模块决定
    外环
    索引为
    偶数
    奇数
    。它将决定行的起始列为
    空格
    块(#)

  • 这个if和else
    内部,只需找出内部循环索引是
    偶数
    奇数
    ,并在此基础上追加列
    空格
    块(#)

  • var size=8;
    变量块='#';
    var空间=“”;
    功能棋盘(棋盘大小){
    对于(变量i=0;i
  • 使用2个循环
  • 检测奇偶行
  • 写入缓冲区
  • 函数createGrid(大小){
    变量s=“”
    对于(变量行=0;行<大小;行++){
    var oddRow=行%2==0
    如果(oddRow){
    s+=''
    }
    对于(变量col=0;colline += ((x+y)%2) ? ' ' : '#';