未定义元素Javascript数组
我有个问题。当我洗牌一个从位置1开始到位置49结束的数组时,一个元素在控制台中输出时似乎是未定义的未定义元素Javascript数组,javascript,arrays,sorting,shuffle,Javascript,Arrays,Sorting,Shuffle,我有个问题。当我洗牌一个从位置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; } 请帮帮我。我认为genNr包含49个元素。循环第一次运行时,i将为49,因此您尝试访问genNr[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;
}
请帮帮我。我认为
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;
}
在这个函数操作它之前,genNr中有什么?你需要提供你发布的循环周围的循环。。。我猜它是使用
j
索引的,并且genNr
数组在哪里初始化?这可能是一个索引越界问题!数组中有多少个元素?换句话说,49
来自哪里?genNr在顶部初始化。以下是JavaScript中从0
开始的完整脚本数组。如果长度为49
,则最后一个元素位于索引48
而不是49
。