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