【发布时间】:2019-01-06 19:56:32
【问题描述】:
完整代码如下所示,理想情况下,我们有 4 个 div 框需要随机填充随机数 ansValue,其中一个(rightAnsValue 及其 rightAnsId)已经完成并且工作正常,我已经设法使其独一无二与其他人相比(没有注释部分的代码)。但是遇到了使其他人独一无二的问题,我的盒子里一直有一些相同的值。在 cmets 中是我试图解决这个问题的一种方法,但可以肯定的是,有一个更简单、更智能的解决方案实际上可以工作。如果您能帮助找到一个可以理解的解决方案来解决这个问题,我将不胜感激。 (P.S. 我也看到过类似的问题,但是它们要么太难,要么没有 JS。)
function createAnswers(){
for(ansId=1; ansId<5; ansId++){
if(ansId!=rightAnsId){
for(i=1; i<10; i++){
digitArray[i-1] = i;
}
genNewRandNum();
// ansArray.length = 3;
// ansArray.push(ansValue);
// for(k=0; k<3; k++){
// if(ansArray[k] == ansArray[k+1] || ansArray[k] == ansArray[k+2]){
// genNewRandNum();
// ansArray[k] = ansValue;
// }else if(ansArray[k+1] == ansArray[k+2]){
// genNewRandNum();
// ansArray[k+1] = ansValue;
// }else{
// break;
// }
// }
if(ansValue!=rightAnsValue){
document.getElementById("box" + ansId).innerHTML = ansValue;
}else{
genNewRandNum();
document.getElementById("box" + ansId).innerHTML = ansValue;
}
}
}
}
我生成新数字的方式:
function genNewRandNum(){
rand1 = digitArray[Math.floor(Math.random() * digitArray.length)];
rand2 = digitArray[Math.floor(Math.random() * digitArray.length)];
ansValue = rand1 * rand2;
}
【问题讨论】:
-
所以你有四个盒子,你想在每个盒子里输出一个 1 到 9 之间的唯一随机数。这就是你要找的吗?
-
我猜,其中一个是问题的正确答案。 UPD:它应该是一个盒子中的 ansValue,它是一个随机数,它本身是在 genNewRandNum() 函数中完成的
-
您似乎在显示两个随机数的乘积?我认为我们需要更多的上下文?
rand1和rand2在哪里使用?它们是否显示在某个地方?展示这些产品的目的是什么?是猜谜游戏吗?需要猜什么? -
从这段代码中我无法确定正确的答案值是什么。但是,如果您知道正确答案,那么您可以更新我的答案中的代码以将正确答案传递给它,然后只返回正确答案以外的值。现在您将拥有一个由 3 个随机唯一值加上 1 个正确答案组成的数组.您可以将这 4 个值随机打乱到 1 个数组中并将其分配给框
-
之所以在外部函数中统计ansValue,是为了让代码更容易阅读。我创建了一个随机问题,例如:“5x9?”,使用了 1 到 9 之间的数字(我用这些数字制作 ansValue 的原因)。有 3 个带有随机答案的框(ansValue),第 4 个是正确的(具有正确的AnsValue)。我的问题是让它们都不同。对不起,如果让任何人感到困惑。
标签: javascript arrays unique