我正在开发一个简单的应用程序,其想法是随机选取而不重复数组的值。
我设法通过一个函数来做到这一点,但在我开始执行它的那一刻,我得到了两个未定义的结果,我不知道为什么
代码示例:
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/