我有问题。当我从位置1开始并在位置49结束时对一个数组进行混洗时,在控制台中输出时,一个元素似乎是未定义的。
for (var i = 49; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = genNr[i];
genNr[i] = genNr[j];
genNr[j] = temp;
}
请帮帮我。
答案 0 :(得分:0)
我认为genNr
包含49个元素。第一次循环运行时,i
将为49,因此您尝试访问genNr[49]
。但是,由于数组索引从零开始,genNr[49]
未定义。
你需要开始循环,i
等于数组的长度减1,并在i
小于零时停止。
for (var i = genNr.length - 1; i >= 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = genNr[i];
genNr[i] = genNr[j];
genNr[j] = temp;
}