【问题标题】:Undefined Element Javascript Array未定义元素 Javascript 数组
【发布时间】:2016-01-04 16:41:22
【问题描述】:

我有问题。当我对从位置 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 中有什么?
  • 您需要提供围绕您发布的循环的循环...我猜它是使用j 索引的,genNr 数组在哪里初始化?这可能是索引越界问题!
  • 数组中有多少个元素?也就是说49从哪里来?
  • genNr 在顶部初始化。这是完整的脚本pastebin.com/cJJ4Gy9u
  • 数组在 JavaScript 中从 0 开始。如果长度为49,则最后一个元素位于索引48 而不是49

标签: javascript arrays sorting shuffle


【解决方案1】:

我认为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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2013-12-30
    • 2020-07-14
    • 1970-01-01
    • 2017-04-25
    • 2020-10-12
    • 2014-08-11
    相关资源
    最近更新 更多