编辑:感谢指出我在内循环中重置tempRndNumber的错误。 我仍然看到“,”字符出现在数组中。
我想创建一个仅在随机数符合特定条件(rnd> = 7)时才会填充的二维数组。但是下面的代码使用“,”和符合条件的数字组合填充了2d数组。
var tempAllRndNumbers = [];
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
var tempRndNumber = [];
var rndNumber = Math.floor(Math.random() * 10);
if (rndNumber >= 7) {
tempRndNumber.push(rndNumber);
}
}
tempAllRndNumbers.push(tempRndNumber);
}
tempAllRndNumbers只能填充数字7及以上,对吗?但相反,我得到一个装满“,”和数字7及以上的二维数组。
答案 0 :(得分:1)
我认为你不想像你一样在内循环的每次迭代中重置tempRndNumber
。试试这个:
var tempAllRndNumbers = [];
for (var i = 0; i < 10; i++) {
var tempRndNumber = [];
for (var j = 0; j < 10; j++) {
var rndNumber = Math.floor(Math.random() * 10);
if (rndNumber >= 7) {
tempRndNumber.push(rndNumber);
}
}
tempAllRndNumbers.push(tempRndNumber);
}
更新: 您必须循环回两个数组以获得正确的输出,请参见此处:
答案 1 :(得分:1)
由于在j
循环的每次迭代中将var tempAllRndNumbers = [];
for (var i = 0; i < 10; i++) {
var tempRndNumber = [];
for (var j = 0; j < 10; {
var rndNumber = Math.floor(Math.random() * 10);
if (rndNumber >= 7) {
tempRndNumber.push(rndNumber);
}
}
tempAllRndNumbers.push(tempRndNumber);
}
重置为空数组,如果最后一次迭代为> = 7,则只包含一个数字。将初始化移到最里面的内部循环:
bind()
答案 2 :(得分:1)
您没有检查tempRndNumber数组是否有任何值,因此您将空数组推入数组tempAllRndNumbers。这就是为什么你有',',你有没有值的索引。