JavaScript:可能异步vs同步For循环问题?还是其他错误?



做JavaScript分配:我需要创建一个游戏,用户尝试从1-6中正确猜测4个随机数字。例1、3、2、4或1、6、5、3等。计算机应该分析它并告诉玩家(a)他或她猜对的数字中有多少是正确的,但在错误的位置,以及(b)有多少猜对的数字是正确的,在正确的位置。

下面的例子(bold =用户输入)):

欢迎来到Mastermind

请输入您的四个数字猜测(空格分隔):2 4 31 1

你有2个正确的号码和1个正确的位置

请输入您的四个数字猜测(空格分隔):4 5 3 2

正确!

你是一个策划者!

然而,在我的代码中,当我计算错误位置和正确位置的正确数字的数量时,控制台输出错误的数字。我复制了correctAnswerList和userGuessList。因此,如果用户的猜测与正确答案相符,我就会更改这些副本中的数字(超出1-6的范围),这样它们就不会被重新计算。我试着在谷歌上搜索什么可能是我的问题,因为我是新的JavaScript。读一些关于async for循环的东西,但没有真正理解。代码如下,提前感谢!!

function checkingCorrect(userGuessList, correctAnswerList){
var correctLocation = 0;
var correctNumber = 0;
var copyUserGuessList = userGuessList;
var copyCorrectAnswerList = correctAnswerList

for(var i = 0; i < 4; i++){
if(userGuessList[i] == correctAnswerList[i]){
correctNumber++
}
for(var x = 0; x < 4; x++){
if(copyUserGuessList[i] == copyCorrectAnswerList[x]){
copyUserGuessList[i] = -1;
copyCorrectAnswerList[x] = 0;
}
}
if(copyUserGuessList[i] == -1){
correctNumber++; }
}
correctNumber = correctNumber - correctLocation;
return([correctNumber, correctLocation]);
}
  1. 要创建数组的副本,您不能简单地重新分配它们的引用(var copyUserGuessList = userGuessList;),相反,您应该创建新的数组,这可以通过使用数组括号内的扩展语法(var copyUserGuessList = [...userGuessList];)轻松完成。

  2. if(userGuessList[i] == correctAnswerList[i]){ correctNumber++ }处增加correctNumber应改为增加correctLocation,从而得到if(userGuessList[i] == correctAnswerList[i]){ correctLocation++ }

生成的代码应该如下所示:

function checkingCorrect(userGuessList, correctAnswerList){
var correctLocation = 0;
var correctNumber = 0;
var copyUserGuessList = [...userGuessList];
var copyCorrectAnswerList = [...correctAnswerList];

for(var i = 0; i < 4; i++){
if(userGuessList[i] == correctAnswerList[i]){
correctLocation++
}
for(var x = 0; x < 4; x++){
if(copyUserGuessList[i] == copyCorrectAnswerList[x]){
copyUserGuessList[i] = -1;
copyCorrectAnswerList[x] = 0;
}
}
if(copyUserGuessList[i] == -1){
correctNumber++; }
}
correctNumber = correctNumber - correctLocation;
return([correctNumber, correctLocation]);
}

相关内容

  • 没有找到相关文章

最新更新