首先,看看你的代码在做什么:
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);