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);
}
上一篇:C#-在游戏循环中使用结构与参考变量


下一篇:在Python中使用if条件加速逐行循环