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);