javascript - 为什么我在 javascript 上的数组上未定义

标签 javascript

我正在开发一个简单的应用程序,其想法是随机选取而不重复数组的值。

我设法通过一个函数来做到这一点,但在我开始执行它的那一刻,我得到了两个未定义的结果,我不知道为什么

代码示例:

var num = [1, 2, 3, 4, 5, 6, 7, 8, 9];

cont = 0;
totalnum = num.length - 1;

function next() {
  var indice = Math.floor(Math.random() * (cont < totalnum ? ++cont : 0));
  var number = num[indice];
  document.getElementById("hola2").innerHTML = num.splice(indice, 1);
}

最佳答案

由于splice()改变了数组的长度,每次只需使用num的长度来获取随机索引,并且不需要其他变量

var num = [1, 2, 3, 4, 5, 6, 7, 8, 9];

function next() {
  if (!num.length) return;// do something when no more exist

  var indice = Math.floor(Math.random() * num.length);
  var number = num.splice(indice, 1);
  document.getElementById("hola2").innerHTML = number;
}

document.getElementById("btn").addEventListener('click', next)
<div id="hola2"></div>
<button id="btn">Next</button>

关于javascript - 为什么我在 javascript 上的数组上未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47801410/

相关文章:

javascript - 在 Node/Express 中将用户输入从前端传递到后端

javascript - 创建数组的副本,但仅包含特定字段

javascript - AngularJS 路由器代码不工作

javascript - 聊天 GPT API key 故障排除

javascript - 检查 $(this) 是否有在数组中指定类或 id 的 parent

javascript - 无法理解javascript递归程序

javascript - Cypress - 如何访问位于 Shadow 元素内的 iFrame 内的按钮

javascript - jQuery 单击事件在 IE7 和 IE8 上不起作用

javascript - 给h1的最后两个字母涂其他颜色

javascript - 获取当天时间的毫秒数