创建一个生成随机数的小应用程序。见 fiddle here .
生成数字的函数有问题。有 3 个变量控制输出。集合/序列中数字的个数,集合的个数,以及限制生成数的数字,最大数。
我创建了 2 个循环来生成集合中的数字。内层循环创建一组数字(一个数组),外层循环将该集合添加到另一个数组 setArr
。
所以我创建了 2 个数组。一个将保存当前生成的集合 temp
,一个将保存整个集合 setsArr
。
内层循环创建一个集合,外层循环将创建的集合推送到setsArr
。在再次执行之前,我清空了 temp
数组。所以这种情况一直持续下去。
但这行不通。我肯定错过了什么。有帮助吗?
function gen() {
var cols = document.getElementById("cols").value;
var sets = document.getElementById("sets").value;
var max = document.getElementById("max").value;
var setsArr = [];
var temp = [];
for (var i = 0; i < sets; i++) {
for (var j = 0; j < cols; j++) {
var num = Math.floor(Math.random() * max);
temp.push(num);
}
setsArr.push(temp);
temp.length = 0;
}
console.log(setsArr);
}
最佳答案
当您将 temp
数组推送到 setsArr
时,它不是被复制而是被引用。清空它会清空 setsArr
中的数组。此外,当始终推送相同的数组时,您将得到 setsArr[0] == setsArr[1]
...
相反,在每次迭代时创建一个新的数组对象:
var setsArr = [];
for (var i = 0; i < sets; i++) {
var temp = [];
for (var j = 0; j < cols; j++) {
var num = Math.floor(Math.random() * max);
temp.push(num);
}
setsArr.push(temp);
}
关于javascript - 循环中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619720/