Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Sorting_Shuffle - Fatal编程技术网

未定义元素Javascript数组

未定义元素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

我有个问题。当我洗牌一个从位置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]
。但是,由于数组索引从零开始,
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