未定义的元素Javascript数组

时间:2016-01-04 16:41:23

标签: 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;
}

请帮帮我。

1 个答案:

答案 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;
}