【问题标题】:JavaScript nested for loops to display numbers without HTMLJavaScript 嵌套 for 循环以显示没有 HTML 的数字
【发布时间】:2016-06-20 03:00:57
【问题描述】:

我需要在控制台中显示一个介于 1 到 30 之间的数字范围,但要以特定方式显示。虽然我已经知道如何使用 for 循环来获取范围,但我还没有想出如何在控制台中显示数字,如 下面显示的图像,其中每个 * 代表一个数字 1- 30.我需要在不使用 HTML 表格的情况下将数字 1-30 显示为 7 行和 5 行。

example

我的代码,显示数字范围,如下:

for (var i = 1; i <= 5; i++)
{

    var output = " ";
    for (var j = 0; j <= 7; j += 1)
    {
    output +=  "*" + "\t";
    }

console.log(output);

}

到目前为止,我已尝试添加第三个嵌套 for 循环,但将显示 7 次 1 - 30 的 5 次迭代。我还尝试过使用 1-30 的数组、while 循环、if 语句,并尝试添加或乘以具有相似结果的变量。

我不禁觉得我以错误的方式接近这个问题。我正在考虑使用数组并让内部 for 循环显示数组的每个索引,但我不确定 JavaScript 是否有能力在打印上一个索引(1 然后 2 然后 3 等)后移动到下一个索引如图所示,我需要它的方式。

【问题讨论】:

  • console.log 只能显示在开发者控制台标签下。
  • 我想你只需要添加 newline("\n")
  • 如果你想要跨越 7 个,那么你最里面的循环需要从 1 到 7,或者从 0 到 6,但是你让它从 0 到 7,这是八次。此外,七次五次下降是 35,而不是 30。
  • @torazaburo 是的,结果是 35 而不是 30

标签: javascript for-loop numbers nested-loops


【解决方案1】:

此代码有效

var output="";var count = 0;
for (var i = 1; i <= 5; i++)
{

    //output = " ";
    for (var j = 0; j < 7; j += 1)
    {
   output +=(count+1)+"\t";count ++;
   }output+="\n";

//document.write(output);

}
console.log(output);

输出:

1   2   3   4   5   6   7   
8   9   10  11  12  13  14  
15  16  17  18  19  20  21  
22  23  24  25  26  27  28  
29  30  31  32  33  34  35

问题中的问题:

问题状态 - 控制台中的数字范围在 1 到 30 之间,但指定了 矩阵是 7*5 等于 35 而不是被错误提及的 30 在问题中。

截图

【讨论】:

  • 这是 8 个跨度,但 OP 想要 7 个跨度。
  • 他想打印数字,而不是星星。他示例中的星号是实际数字的占位符。
【解决方案2】:

@torazaburo 所示,OP 正在寻找填充 数字而不是 [ * ] 。虽然 SaiKiranUppu 给出了令人满意的答案并且应该获得支持,但我想提供另一种解决方案:

JS:

function matrix(r, c) {
  var n = '';
  var x = 1;
  for(var i = 1; i <= r; i++) {
    for(var j = 0; j < c; j++) {
      n += x + '\t';
      x++;
    }
    n += '\n';
  }
  console.log(n);
};
matrix(5, 7); 

【讨论】:

    【解决方案3】:

    你可以这样做。我这样做只是为了你..

        var lastJ = 1;
        for (var i = 1; i <= 6; i++) {
    
            var output = " ";
            var j = lastJ ;
            var totalLoop = j+4;
            for (j = lastJ; j <= totalLoop; j++) {
                output += j + "\t";
            }
    
            console.log(output);
            lastJ = j;
        }
    

    输出是这样的 console output in image

    如果您想要类似日历的输出,请使用此

    var lastJ = 1;
        for (var i = 1; i <= 5; i++) {
    
            var output = " ";
            var j = lastJ ;
            var totalLoop = j+6;
            for (j = lastJ;j <= totalLoop; j++) {
                if(j<32){
                  output += j + "\t";
                }else{
                    output += 0 + "\t";
                }
            }
    
            console.log(output);
            lastJ = j;
        }
    

    输出是这样的

     1  2   3   4   5   6   7   
     8  9   10  11  12  13  14  
     15 16  17  18  19  20  21  
     22 23  24  25  26  27  28  
     29 30  31  0   0   0   0   
    

    【讨论】:

      【解决方案4】:

      首先,欢迎来到 SO!

      每个外部循环之后的换行元素应该可以解决问题。像这样。

      for (var i = 1; i <= 5; i++)
          {
            var output = "";
            for (var j = 1; j <= 7; j += 1)
              {
               output +=  "*" + "\t";
              }
            output += "\n";
            console.log(output);
          }
      

      编辑: 实现了 OP 想要的数字而不是 *s。对代码的简单修改使这变得难以置信的容易。

      var output = "";
      for (var i = 1; i <= 5; i++)
          {
            for (var j = 1; j <= 7; j += 1)
              {
               output +=  i*j + "\t";
              }
            output += "\n";
         }
         console.log(output);
      }
      

      输出 - Chrome 开发者工具截图

      【讨论】:

      • 感谢大家的意见!这些解决方案非常有助于我更好地理解我哪里出错了,我想太多了(从而增加了问题),以及如何制定更好的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 2017-03-14
      • 1970-01-01
      • 2014-10-31
      • 2021-10-23
      • 2019-09-24
      相关资源
      最近更新 更多