创建一个小型应用程序以生成随机数.参见小提琴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);
}
标签:loops,arrays,javascript 来源: https://codeday.me/bug/20191121/2055676.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。