N_ALPHA = 6;
N_CHOICES = 4;
ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var alphabet = ALPHABET.substring(0, N_ALPHA);
var indexForm=new Array();
function guessStrToArr(inStr)
{
{
for (i=0;i<N_CHOICES;i++)
{
indexForm[i]=alphabet.indexOf(inStr.charAt(i).toUpperCase());
}
}
return indexForm;
}
function numBulls(guess, goal)
{
guess=new Array (guessStrToArr(prompt('enter your guess1')));
alert(guess);
goal=new Array(guessStrToArr(prompt('enter your guess2')));
var checkArray = new Array (guess.concat(goal);
alert(checkArray);
var count=0;
for (i=0;i<N_CHOICES;i++)
{
if (guess[i]===goal[i])
{
count++
}
}
return count;
}
numBulls();
当我运行上面的代码时,它返回相同的数组,evern我输入不同的代码进入提示alet框。我不知道为什么,你能帮帮我吗? 非常感谢你。
答案 0 :(得分:1)
indexForm
是一个全局变量。第一次调用guessStrToArr
函数时,会填充数组。第二次重新填充。在进行比较时,将阵列与自身进行比较。试试这个:
function guessStrToArr(inStr) {
var indexForm = new Array();
for (i = 0; i < N_CHOICES; i++) {
indexForm[i] = alphabet.indexOf(inStr.charAt(i).toUpperCase());
}
return indexForm;
}
另请注意,您并未尝试确保inStr.length
与N_CHOICES
相同。