ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-循环中的数组

2019-11-22 00:37:56  阅读:153  来源: 互联网

标签:loops arrays javascript


创建一个小型应用程序以生成随机数.参见小提琴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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有