js如何用for循环制作二维数组矩阵并继续计算下一行的数字
js how to make 2d array matrix with for loop and continue counting numbers on next row
我正在尝试使我的二维矩阵的数字在新行上继续
var myMatrix = [];
var row = 5;
var colom = 3;
for (var i = 0; i < rows; i++) {
var toto = 1;
myMatrix[i] = [i];
for (var j = 0; j < colom; j++) {
myMatrix[i][j] = [i + j];
}
}
console.log(myMatrix);
我试图让它像这样打印数字:
123
456
789 and etc...
但没有成功:/
有人可以提供帮助并提供带有示例的视频或网站,以便我可以了解更多有关此类内容的信息吗?
使用 i * columns + j ... 我必须添加最多 30 个字符用于填充
首先,看看您的代码在做什么:
const myMatrix = [];
const rows = 5;
const columns = 3;
for (var i = 0; i < rows; i++) {
myMatrix[i] = [i];
for (var j = 0; j < columns; j++) {
myMatrix[i][j] = [i+j];
}
}
console.log(myMatrix);
您的 row
/rows
变量名有错字。尽管忽略了这一点...
您的 myMatrix[i]
行正在 i
处创建一个数组,然后将其设置为一个值为 i
的数组。这会创建一个不稳定的 mash-up ,其中每个 "row" 都会得到一个数组,其中的行号作为第一个值,如下所示:
[[0], [1], [2], [3], [4]]
你的内部循环然后在该位置向该数组添加一个值并将 i+j
加在一起,但将其放在数组内部,这不是你想要的,所以你会得到这样的东西:
[
[[0], [1], [2]], // i = 0
[[1], [2], [3]], // i = 1
[[2], [3], [4]], // i = 2
// ... etc
]
另请注意,无论如何您要替换第一个 [i]
,所以不要那样设置,只需将其设为空数组 []
.
你想要的是这样的:
const myMatrix = [];
const rows = 5;
const columns = 3;
for (var i = 0; i < rows; i++) {
myMatrix[i] = [];
for (var j = 0; j < columns; j++) {
myMatrix[i][j] = (i*columns)+j;
}
}
console.log(myMatrix);
您的代码发生了三处更改:
- 制作
[i]
和[]
。它不会伤害任何东西,但是 [i]
也没有意义。
- 从数组中取出
i+j
部分,您只需要那里的值。
- 当您添加
i
时,将其乘以 columns
,这样它就不会每次都重置:(i*columns)+j
这会给你一个很好的输出,从 0
开始。如果您希望它从 1
开始,只需在您的值上加一:
const myMatrix = [];
const rows = 5;
const columns = 3;
for (var i = 0; i < rows; i++) {
myMatrix[i] = [];
for (var j = 0; j < columns; j++) {
myMatrix[i][j] = (i*columns)+j+1;
}
}
console.log(myMatrix);
我正在尝试使我的二维矩阵的数字在新行上继续
var myMatrix = [];
var row = 5;
var colom = 3;
for (var i = 0; i < rows; i++) {
var toto = 1;
myMatrix[i] = [i];
for (var j = 0; j < colom; j++) {
myMatrix[i][j] = [i + j];
}
}
console.log(myMatrix);
我试图让它像这样打印数字:
123
456
789 and etc...
但没有成功:/
有人可以提供帮助并提供带有示例的视频或网站,以便我可以了解更多有关此类内容的信息吗?
使用 i * columns + j ... 我必须添加最多 30 个字符用于填充
首先,看看您的代码在做什么:
const myMatrix = [];
const rows = 5;
const columns = 3;
for (var i = 0; i < rows; i++) {
myMatrix[i] = [i];
for (var j = 0; j < columns; j++) {
myMatrix[i][j] = [i+j];
}
}
console.log(myMatrix);
您的 row
/rows
变量名有错字。尽管忽略了这一点...
您的 myMatrix[i]
行正在 i
处创建一个数组,然后将其设置为一个值为 i
的数组。这会创建一个不稳定的 mash-up ,其中每个 "row" 都会得到一个数组,其中的行号作为第一个值,如下所示:
[[0], [1], [2], [3], [4]]
你的内部循环然后在该位置向该数组添加一个值并将 i+j
加在一起,但将其放在数组内部,这不是你想要的,所以你会得到这样的东西:
[
[[0], [1], [2]], // i = 0
[[1], [2], [3]], // i = 1
[[2], [3], [4]], // i = 2
// ... etc
]
另请注意,无论如何您要替换第一个 [i]
,所以不要那样设置,只需将其设为空数组 []
.
你想要的是这样的:
const myMatrix = [];
const rows = 5;
const columns = 3;
for (var i = 0; i < rows; i++) {
myMatrix[i] = [];
for (var j = 0; j < columns; j++) {
myMatrix[i][j] = (i*columns)+j;
}
}
console.log(myMatrix);
您的代码发生了三处更改:
- 制作
[i]
和[]
。它不会伤害任何东西,但是[i]
也没有意义。 - 从数组中取出
i+j
部分,您只需要那里的值。 - 当您添加
i
时,将其乘以columns
,这样它就不会每次都重置:(i*columns)+j
这会给你一个很好的输出,从 0
开始。如果您希望它从 1
开始,只需在您的值上加一:
const myMatrix = [];
const rows = 5;
const columns = 3;
for (var i = 0; i < rows; i++) {
myMatrix[i] = [];
for (var j = 0; j < columns; j++) {
myMatrix[i][j] = (i*columns)+j+1;
}
}
console.log(myMatrix);