我有一些代码如下所示,我明白它在做什么,但我不明白部分语法。我想知道是否有人可以向我解释一下。基本上,代码用 0 到 2 之间的随机整数数组填充 2D 数组。我不明白的是,为什么我要在第二个 for 循环之后将“result[i][j]”放在下面。为什么我不直接把 result[j] 代替。我在网上找到了这段代码,知道它做了什么,但我还是不明白那一点语法。
function buildArray(width, height){
var result= [];
for (var i = 0 ; i < width; i++) {
result[i] = [];
for (var j = 0; j < height; j++) {
result[i][j] = Math.floor(Math.random() * 3);
console.log(result[i][j]);
}
}
return result;
}
最佳答案
假设您将 width
和 height
值传递给函数 3...
buildArray(3, 3);
您可以将宽度
值视为代表“列”的数量,将高度
值视为代表每列中“项目”的数量。
在第一个 for 循环的第一次迭代中,结果
有一个列。因为此时 i
为零,我们可以说...
result[0] = new Array();
数组为空,但随后第二个 for 循环开始发挥作用。
第二个 for 循环填充新调用的数组,在本例中使用 3 个随机生成的整数。
假设第二个 for 循环的第一次迭代生成整数“2”,第二次迭代生成“0”,第三次迭代生成“1”。这意味着 resutl[0]
现在看起来像这样......
result[0] = [2, 0, 1];
...这样...
result[0][0] = 2;
result[0][1] = 0;
result[0][2] = 1;
然后,i
递增,并调用位于 result[1]
位置的新数组,然后用 3 个项目填充该数组。等等等等
结果中第二个括号中的值表示“height”数组中值的索引位置,该数组本身由结果中的索引位置指示code> 数组的第一个括号。
在示例结束时,结果
将是一个length = 3
的数组(三个数组),每个数组包含三个随机生成的整数。
尝试用这样的东西替换console.log()
...
console.log('result['+i+']['+j+'] = ' + result[i][j]);
...更好地了解正在生成的随机数的索引位置。
您也可能想看看:Creating a custom two-dimensional Array @ javascriptkit.com
关于javascript - 二维数组 For 循环语法的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34759352/