【问题标题】:How to get the first part of this basic loop exercise right?如何正确完成这个基本循环练习的第一部分?
【发布时间】:2016-02-19 20:28:26
【问题描述】:

我正在从 Marijn Haverbeke 的 Eloquent Javascript 一书中学习 Javascript,第二章(程序结构)末尾有练习。编写一个循环,对 console.log 进行七次调用以输出以下三角形:

#
##
###
####
#####
######
#######

我尝试像使用 for 循环一样解决它。

var hash = "#";

for(counter = 0; counter < 8; counter ++)
{

   hash = hash + "#";

   console.log(hash);

}

问题是它没有显示所需输出的第一行,我如何得到它?

我将非常感谢任何解决方案,特别是如果它带有一点解释。

【问题讨论】:

  • 这是我愿意投赞成票的少数菜鸟问题之一,纯粹是因为你问得正确。它清楚地显示了问题、问题、尝试以及实际输出与预期。请不要对提出的问题投反对票 - 如果需要,请关闭,但不要投反对票。
  • 欢迎加入 JS 团队。绝对接受 gimbel0893 的回答。将变量声明为空字符串是可行的方法。
  • 干得好,@Mohil,欢迎来到 StackOverflow!一个小建议:通常,您希望循环变量是本地的,所以for(var counter... 会更好。
  • @SterlingArcher 我同意这个问题问得很好,但仍然......稍微调试一下就会发现问题。
  • 请为有用或至少表明研究成果的问题投赞成票,而不仅仅是问得好的问题。对于没有很好提出的问题,会有反对票。当有人搜索“了解程序结构中的 for 循环”时,您是否希望这是第一个 Google 结果?

标签: javascript


【解决方案1】:

干得好,因为你才刚刚开始。

你几乎明白了。只需将变量声明为空字符串即可。

// this is the line that needs to be changed
var hash = '';

for(....) {
  hash += "#";
  console.log(hash);
}

这样,当您在循环中添加“hash”变量时,它不会在变量声明中包含额外的“#”。

【讨论】:

    【解决方案2】:

    您的代码正在“从上到下”执行。

    在您的“for 循环”中,第一次迭代将 # 添加到已声明的 var 哈希中,这使其成为 ##,这会被控制台“记录”。

    您只需将 console.log(hash) 放在 hash = hash + "#" 之前。

    console.log(hash);
    hash = hash + "#";
    

    这将确保在第一次迭代中,首先将“记录”'#',然后才可以使用 hash = hash + "#" :)

    【讨论】:

    • 但是我要补充一点,也许你应该尝试从一个空字符串开始,就像'count'应该从零开始,它可以节省很多这样的'事件':)
    【解决方案3】:

    您立即将哈希连接到它。注销循环前的初始值。

    console.log(hash);
    for ...
    

    【讨论】:

    • 或者将hash初始化为空
    【解决方案4】:

    我可能会迟到,但这样做会浪费一个字符(第 9 个)。

    这样初始化

    hash = '';
    

    你很高兴.. :)

    【讨论】:

      【解决方案5】:
      var grid = "#"
      for(i = 1; i < 8; i++){
          console.log(grid.repeat(i));
      }
      

      【讨论】:

        【解决方案6】:

        由于您已经声明并初始化了变量,因此您必须先记录它,然后才能像这样使用递增或递减运算符。

        let triangle = '#';
        for(counter = 0; counter < 7; counter ++)
        {
           console.log(triangle);
           triangle += "#";
        }

        这样,console.log() 将记录第一个散列,而不是增加它以记录其余散列。您还应该使用 let 关键字而不是 var 关键字,因为它引入了块作用域,使我们能够编写干净且不易出错的代码。

        【讨论】:

          猜你喜欢
          • 2021-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 2022-08-21
          • 1970-01-01
          相关资源
          最近更新 更多