我使用math.random和math.floor创建了一个随机数生成器,但还使该函数递归生成了唯一的数字。
基本上,它会生成一个随机数,检查该数字是否在数组内,如果不是,则将该数字插入数组,然后返回该数字。
如果数字在数组内,它将再次调用该函数。
当前,在我的代码中,我运行了3次该函数。第一个函数(因为在空数组中还没有数字)总是返回某些内容,但是偶尔在第二次/第三次调用该函数时,它会返回未定义的值。
只需删除递归,它就可以正常工作。
var myArray = [];
randomWholeNumber();
randomWholeNumber();
randomWholeNumber();
function randomWholeNumber() {
var randomNumberBetween1and12 = (Math.floor(Math.random() * 12)) + 1;
if (myArray.includes(randomNumberBetween1and12)) {
randomWholeNumber();
};
if (!(myArray.includes(randomNumberBetween1and12))) {
myArray.push(randomNumberBetween1and12);
console.log(randomNumberBetween1and12);
return randomNumberBetween1and12;
};
}
我希望输出始终是一个数字,但是在调用该函数的3次中,有1次返回未定义。它也只会返回一次undefined!
即:
输出1:始终为数字,从未定义。
输出2:有时未定义,但是如果输出3未定义,则始终为数字
输出3:有时未定义,但是如果输出2未定义,则该值始终为数字