js如何用for循环制作2d数组矩阵并继续计算下一行的数字

时间:2018-02-19 15:49:13

标签: javascript arrays for-loop nested-loops

我试图让我的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;
&#13;
&#13;

我试图让它打印出这样的数字:

  

123

     

456

     789等等......

但没有成功:/

是否有人可以提供帮助,还可以为视频或网站提供示例,以便我可以了解有关此类内容的更多信息?

2 个答案:

答案 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个字符用于填充