函数返回相同的值

时间:2013-01-26 13:21:15

标签: javascript

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框。我不知道为什么,你能帮帮我吗? 非常感谢你。

1 个答案:

答案 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.lengthN_CHOICES相同。