我试图在用户单击按钮的地方添加一些代码,该代码生成3个数字(没有重复,因此245可以,但是122和121则不行),并在屏幕上每秒显示一次。为了确保没有重复,我使用了一个数组:var usedNums = [];
。然后,我创建一个数字(digit = Math.random()
)并检查它是否已经在数组中,如果不是,则添加它,如下所示:
if ($.inArray(digit, usedNums) !== -1) {
newNums();
} else {
usedNums.push(digit);
$('#memDigit').html(digit);
}
最初的几次,它都有效,但是当我第十次单击它时,出现了
Uncaught RangeError: Maximum call stack size exceeded
错误。救命!这是完整的代码:
var usedNums = [];
var digit;
var amount = 3;
function newNums() {
digit = Math.floor(Math.random() * 10);
if ($.inArray(digit, usedNums) !== -1) {
newNums();
} else {
usedNums.push(digit);
$('#memDigit').html(digit);
}
}
function createNums() {
for (var i; i < amount; i++) {
setTimeout(newNums, 1000);
}
}
//$(document).ready(createNums);
最佳答案
我认为您应该在每个数字生成完成后清空/重新初始化usedNums数组。
关于javascript - 使用Javascript搜索数组中的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41205273/