有人可以解释一下这段javascript代码在做什么吗?

时间:2018-05-01 14:24:08

标签: javascript arrays random

所以我对编程很新,并试图理解这段javascript代码是专门做的第3和第4行我正确地假设它正在检查数组中随机生成的数字,如果它不存在于数组中它添加它然后如果它是真的它会将该数字放在文档ID中?

var numarray = new Array(76);
do {
  var rannum = Math.floor(Math.random() * 76) + 1;
} while (numarray[rannum]);
numarray[gNumber] = true;
document.getElementById(cellID).innerHTML = rannum;

2 个答案:

答案 0 :(得分:1)

var numarray= new Array(76);

它将创建包含76个元素的数组

do {
           var rannum= Math.floor(Math.random() * 76) + 1;

这将在76中分配一个数字

        } while (numarray[rannum]); 

这将循环遍历rannum的元素,在你的情况下它将始终未定义



var numarray= new Array(76);
do {
           var rannum= Math.floor(Math.random() * 76) + 1;
console.log(rannum);
        } while (numarray[rannum]); 
console.log(numarray)




答案 1 :(得分:1)

总的来说,它选择1到76之间的随机数,并且只要数组中与上一个生成的随机数的索引匹配的项具有非虚假值,它将继续这样做。 / p>

在您的情况下,数组仅声明具有76个索引位置,但是数组从不填充,因此数组中充满了undefined项。

循环的while部分表示循环条件为numarry[random],这是一种测试项目是否为任何" truthy"价值(任何不会隐含地转换为"虚假"或"虚假"价值的0undefinednull,{{1 },NaNfalse)。由于您的数组中充满了""个项,因此在第一次检查时循环条件不满足,并且循环只会迭代一次,从而只生成一个随机数。

有关详细信息,请参阅内联评论。



undefined




资源: