我希望创建一个数字标签,但永远不会有相同的数字。 结果的例子[1,4,7,5,0,2,3,8,9,6]
我有这个错误:
超出最大调用堆栈大小
我认为它是由递归引起的,但我不知道该怎么做。
cardsAlreadyUsed = [1,4,7]
setNumCardsToUsed(cardsAlreadyUsed){
var nbMin = 0; var nbMax = 9;
var result = Math.floor((Math.random() * nbMax) + nbMin);
var i = 0;
while (i < cardsAlreadyUsed.length) {
if (result == cardsAlreadyUsed[i]) {
result = null;
break;
}
i++;
}
if (result == null)
setNumCardsToUsed(cardsAlreadyUsed);
else
cardsAlreadyUsed.push(result);
return result;
};
答案 0 :(得分:1)
实现目标所需的一种快速方法是改组一组独特的数组。
function generateNumber() {
var array = [0,1,2,3,4,5,6,7,8,9];
var currentIndex = array.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
function makeTab() {
var toReturn = numseries[ tabCounter ];
tabCounter++;
return toReturn;
}
//Counter
var tabCounter = 0;
//Generate the series of number on the pageLoad
var numseries = generateNumber();
//Call to generate new tab
var newtab = makeTab();
console.log( newtab );
&#13;
所以基本上,在页面加载时,您会生成一系列唯一编号。
如果要生成新标签,可以调用函数makeTab();
答案 1 :(得分:0)