【问题标题】:js how to make 2d array matrix with for loop and continue counting numbers on next rowjs如何用for循环制作二维数组矩阵并继续计算下一行的数字
【发布时间】:2018-02-19 15:49:13
【问题描述】:

我正在尝试使我的二维矩阵的数字在新行上继续

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 等等……

但没有成功:/

有人可以提供帮助,也可以提供一个视频或网站示例,让我可以了解更多关于这类东西的信息?

【问题讨论】:

  • 您的问题显示了有关 JavaScript 语法的基本空白。我建议您阅读有关数组和整数的更多信息

标签: javascript arrays for-loop nested-loops


【解决方案1】:

首先,看看你的代码在做什么:

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

【讨论】:

    【解决方案2】:

    使用 i * columns + j ... 我必须添加最多 30 个字符用于填充

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多