如何将另一个元素添加到数组?

时间:2019-02-13 15:43:44

标签: javascript arrays

我正在尝试编写一个可以玩子手的机器人。我使用了一个数组来存储所有先前的字母猜测。如何添加到该数组中,以便在控制台中显示所有先前的猜测?

我已经尝试在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],但是我正在尝试实现这一点,但是它没有用。

1 个答案:

答案 0 :(得分:1)

数组的push()函数在数组的末尾附加一个项目。例如:

var array = [1,2,3];
array.push(4);
console.log(array)
// [1,2,3,4]

您可能多次声明了数组。如果要显示的代码在函数内部,则每次调用该函数时,都会创建一个全新的数组

var correctGuessed = correctGuessed || [];

要解决此问题,您可以通过在任何函数外部进行声明来将correctGuessed声明为全局变量