JavaScript 嵌套 for 循环以显示没有 HTML 的数字

JavaScript nested for loops to display numbers without HTML

我需要在控制台中以特定方式显示 1 到 30 之间的数字范围。虽然我已经想出如何使用 for 循环获取范围,但我还没有想出如何在控制台中显示数字,就像下面显示的 图像 中每个 * 代表一个1-30 号。我需要数字 1-30 在不使用 HTML 表格的情况下显示 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等),如图所示。

首先,欢迎来到 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开发者工具截图

此代码有效

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

问题中的问题:

Question States -Number range between 1 and 30 in the console but specified order of matrix is 7*5 which is equal to 35 not 30 which was wrongly mentioned in the questiion.

截图

你可以做到这一点。我只为你..

    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   

正如 @torazaburo 所指出的,OP 正在寻求填充 numbers 而不是 [ * ] 。虽然 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);