我正在尝试编写一个可以玩子手的机器人。我使用了一个数组来存储所有先前的字母猜测。如何添加到该数组中,以便在控制台中显示所有先前的猜测?
我已经尝试在JavaScript中使用push()
函数,对于第一次猜测来说,这似乎很好用。但是第二个猜测将返回另一个仅包含该字母的数组,而不是包含所有猜测的数组。
当我尝试使用correctGuessed[correctGuessed.length] = guessVal;
写入数组时也发生这种情况,但我不确定哪里出错了。
var word = "ALPHABET";
var wordLength = word.length;
var choices = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z"];
var correctGuessed = correctGuessed || [];
var guess = Math.floor(Math.random() * choices.length);
var guessVal = choices[guess].valueOf();
//Start the game with a word length and a letter guess
message.reply("I am thinking of a " + wordLength + " letter word.");
message.channel.send("My guess is " + guessVal);
//If the guess was correct
if(word.includes(guessVal))
{
//Send a congratulatory message and push the letter onto
//the end of the array so it cannot be guessed again.
message.channel.send("Your guess was correct! Guess again!");
//newCorrect = correctGuessed.push(guessVal);
correctGuessed[correctGuessed.length] = guessVal;
console.log(correctGuessed);
}
此代码的预期结果是,如果我猜字母“ A”,则控制台将显示结果['A']。然后,在猜出字母'B'之后,控制台将显示结果['A','B']。
在猜出“ A”之后,此代码的实际输出为['A'],在猜出“ B”之后,输出为['B']而不是['A','B']。我得到每个猜测在自己的数组。
问题不是我不了解push()
的工作方式;而是我了解
var array = [1,2,3];
array.push(4);
将产生[1,2,3,4]
,但是我正在尝试实现这一点,但是它没有用。
答案 0 :(得分:1)
数组的push()
函数在数组的末尾附加一个项目。例如:
var array = [1,2,3];
array.push(4);
console.log(array)
// [1,2,3,4]
您可能多次声明了数组。如果要显示的代码在函数内部,则每次调用该函数时,都会创建一个全新的数组
var correctGuessed = correctGuessed || [];
要解决此问题,您可以通过在任何函数外部进行声明来将correctGuessed声明为全局变量