创建一个小型应用程序以生成随机数.参见小提琴here.
生成数字的函数有问题.有3个变量控制输出.组/序列中的数字计数,组的数目以及用于限制所生成的数目(最大数目)的数字.
我创建了2个循环以生成集合中的数字.内部循环创建一组数字(一个数组),外部循环将其添加到另一个数组setArr.
所以我创建了2个数组.一个将保存当前生成的集合温度,另一个将保存整个集合,即setArr.
内循环创建一个集合,外循环将创建的集合推送到setsArr.在再次执行之前,我清空了临时数组.因此,这种情况一直持续下去.
但这是行不通的.我肯定错过了什么.有什么帮助吗?
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);
}
解决方法:
当您将临时数组推到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);
}