我试图让我的2d矩阵在新行上继续数字
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);
&#13;
我试图让它打印出这样的数字:
123
456
789等等......
但没有成功:/
是否有人可以提供帮助,还可以为视频或网站提供示例,以便我可以了解有关此类内容的更多信息?
答案 0 :(得分:3)
首先,看看你的代码在做什么:
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
的数组。这就产生了一个不稳定的混搭,其中每个“行”得到一个数组,其行号作为第一个值,如下所示:
[[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);
答案 1 :(得分:-1)
使用i * columns + j ...我必须添加最多30个字符用于填充