Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能解释一下这段javascript代码在做什么吗?_Javascript_Arrays_Random - Fatal编程技术网

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

有人能解释一下这段javascript代码在做什么吗?,javascript,arrays,random,Javascript,Arrays,Random,因此,我对编程是完全陌生的,我试图理解这段javascript代码在做什么,特别是第3行和第4行,我是否正确地假设它正在检查数组中随机生成的数字,如果它不在数组中,它会添加它,如果它是真的,它会将该数字放在文档ID中 var numarray=新数组(76); 做{ var rannum=Math.floor(Math.random()*76)+1; }while(numarray[rannum]); numarray[gNumber]=真; document.getElementById(c

因此,我对编程是完全陌生的,我试图理解这段javascript代码在做什么,特别是第3行和第4行,我是否正确地假设它正在检查数组中随机生成的数字,如果它不在数组中,它会添加它,如果它是真的,它会将该数字放在文档ID中

var numarray=新数组(76);
做{
var rannum=Math.floor(Math.random()*76)+1;
}while(numarray[rannum]);
numarray[gNumber]=真;
document.getElementById(cellID).innerHTML=rannum
它将创建包含76个元素的数组

do {
           var rannum= Math.floor(Math.random() * 76) + 1;
这将分配一个76中的数字

        } while (numarray[rannum]); 
这将循环通过定义了rannum的元素,在您的情况下,它将始终未定义

var numarray=新数组(76);
做{
var rannum=Math.floor(Math.random()*76)+1;
console.log(rannum);
}while(numarray[rannum]);
console.log(numarray)
它将创建包含76个元素的数组

do {
           var rannum= Math.floor(Math.random() * 76) + 1;
这将分配一个76中的数字

        } while (numarray[rannum]); 
这将循环通过定义了rannum的元素,在您的情况下,它将始终未定义

var numarray=新数组(76);
做{
var rannum=Math.floor(Math.random()*76)+1;
console.log(rannum);
}while(numarray[rannum]);

console.log(numarray)
总的来说,它会选择一个介于1和76之间的随机数,只要数组中与最后生成的随机数的索引匹配的项具有非伪值,它就会继续这样做

在您的例子中,数组只声明有76个索引位置,但数组从不填充,因此数组中充满了
未定义的

循环的
while
部分表示循环条件为
numary[random]
,这是一种测试项目是否为任何“truthy”值(任何不会隐式转换为“false”或“falsy”的内容)的方法值,如
0
未定义
null
NaN
false
)。由于数组中充满了
未定义的
项,因此循环条件在第一次检查时不满足,循环只迭代一次,因此只生成一个随机数

有关详细信息,请参阅内联注释

var numarray=新数组(76);//创建具有76个索引位置(或长度为76)的新数组
//开始循环
做{
//Math.random()-获取介于0(包含)和1(排除)之间的随机数
//*76-取随机数并乘以76,得到0(含)之间的随机数
//和76(不含)
//Math.floor()-将数字向下舍入到下一个整数
//+1-添加偏移量,而不是0(包括)和76(不包括)的范围
//因此,最终数字将介于1(含)和77(不含)之间
var rannum=Math.floor(Math.random()*76)+1;
}while(numarray[rannum]);//只要数组项与随机项匹配,就保持循环
//不是未定义、false、0、NaN、null或“”(即“truthy”)。
//在这种情况下,数组是空的,因此循环只会
//迭代一次。
//将与gNumber值匹配的数组项设置为true。
//您没有提供任何声明或初始化gNumber的代码,
//所以这行代码在这种情况下是毫无意义的。
numarray[gNumber]=真;
//使用匹配的id更改元素的内部内容(HTML和文本)
//cellID中的值与随机数的差值

document.getElementById(cellID).innerHTML=rannum总的来说,它会选择一个介于1和76之间的随机数,只要数组中与最后生成的随机数的索引匹配的项具有非伪值,它就会继续这样做

在您的例子中,数组只声明有76个索引位置,但数组从不填充,因此数组中充满了
未定义的

循环的
while
部分表示循环条件为
numary[random]
,这是一种测试项目是否为任何“truthy”值(任何不会隐式转换为“false”或“falsy”的内容)的方法值,如
0
未定义
null
NaN
false
)。由于数组中充满了
未定义的
项,因此循环条件在第一次检查时不满足,循环只迭代一次,因此只生成一个随机数

有关详细信息,请参阅内联注释

var numarray=新数组(76);//创建具有76个索引位置(或长度为76)的新数组
//开始循环
做{
//Math.random()-获取介于0(包含)和1(排除)之间的随机数
//*76-取随机数并乘以76,得到0(含)之间的随机数
//和76(不含)
//Math.floor()-将数字向下舍入到下一个整数
//+1-添加偏移量,而不是0(包括)和76(不包括)的范围
//因此,最终数字将介于1(含)和77(不含)之间
var rannum=Math.floor(Math.random()*76)+1;
}while(numarray[rannum]);//只要数组项与随机项匹配,就保持循环
//不是未定义、false、0、NaN、null或“”(即“truthy”)。
//在这种情况下,数组是空的,因此循环只会
//迭代一次。
//将与gNumber值匹配的数组项设置为true。
//您没有提供任何声明或初始化gNumber的代码,
//所以这行代码在这种情况下是毫无意义的。
numarray[gNumber]=真;
//使用更改元素的内部内容(HTML和文本)