如何在 Javascript 中使用 "for" 循环创建二维数组?

How to create 2d array using "for" loop in Javascript?

我需要编写一个程序,在第 (5) 行和第 (4) 列的变量“数字”中创建一个二维数组。数组的元素必须是从 1 开始到 20 结束的连续整数。我必须使用“for”循环。

[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 10, 11, 12 ],
[ 13, 14, 15, 16 ],
[ 17, 18, 19, 20 ],

所以我想到了:

const numbers = [];
const columns = 4;
const rows = 5;

for (let i = 0; i < rows; i++) {
    numbers [i] = [];
    for (let j = 0; j < columns; j++){
        numbers  [i][j] = j + 1;
    }
}
console.log(numbers); 

但结果是五个相同的行,如下所示:

      [ 1, 2, 3, 4 ],
      [ 1, 2, 3, 4 ],
      [ 1, 2, 3, 4 ],
      [ 1, 2, 3, 4 ],
      [ 1, 2, 3, 4 ]

你知道如何解决吗?如何使第二行从 5 开始?

看起来像在第二个循环中,你应该 numbers [i][j] = j * i; 而不是

每次外部 for 循环开始新的迭代时,j 都会重置回 0,这就是为什么您总是获取以 1 开头的行。

要解决此问题,您可以在跟踪当前数字的 for 循环之外声明一个变量,并使用它代替 j,如下所示:

const numbers = [];
const columns = 4;
const rows = 5;
let currNum = 0;

for (let i = 0; i < rows; i++) {
    numbers [i] = [];
    for (let j = 0; j < columns; j++){
        currNum++;
        numbers  [i][j] = currNum;
    }
}
console.log(numbers); 

这是一些更新的代码。您需要将 i*columns 添加到每个值

const numbers = [];
const columns = 4;
const rows = 5;

for (let i = 0; i < rows; i++) {
    numbers[i] = [];
    for (let j = 0; j < columns; j++){
        numbers[i][j] = j + 1 + (i*columns);
    }
}
console.log(numbers);