我有以下效用函数:
var Utilities = (function (array, maxN) {
function generateRandomNumber(array, maxN) {
let randomN = Math.floor(Math.random() * (maxN - 0) + 0);
if(array.length == maxN) {
array = [];
}
if(!array.includes(randomN)) {
array.push(randomN);
}
else {
randomN = generateRandomNumber(array, maxN);
}
return randomN;
}
return {
generateRandomNumber: generateRandomNumber
};
})();
export default Utilities;
我正在使用的:
function getRandomNumber() {
var array = [];
let randomN = Utilities.generateRandomNumber(array, 5);
return randomN;
}
然后我在反应组件中使用此函数,如下所示:
...
getNewQuestion = () => {
var randomN = getRandomNumber();
console.log(randomN);
this.setState({
question: this.state.data.data.questions[randomN]
})
this.setCatBgColor(this.state.data.data.questions[randomN].category);
}
...
我刚做了一个测试,我得到了:
0,0,3
这是错误的,因为它们应该是唯一的,直到达到5的长度(在这种情况下)。
答案 0 :(得分:0)
你的功能
function getRandomNumber() {
var array = [];
let randomN = Utilities.generateRandomNumber(array, 5);
return randomN;
}
会在每次通话时创建一个新的空array
,而不会记住任何内容。 generateRandomNumber
无法了解之前的调用。将变量声明和初始化放在函数之外:
var array = [];
function getRandomNumber() {
return Utilities.generateRandomNumber(array, 5);
}