繁体   English   中英

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

[英]How can I add another element to an array?

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

我已经尝试过在 JavaScript 中使用push()函数,这对于第一次猜测似乎工作正常。 但是第二个猜测返回另一个数组,它只包含那个字母,而不是一个包含所有猜测的数组。

当我尝试使用correctGuessed[correctGuessed.length] = guessVal;编写数组时,也会发生这种情况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] ,但我正在努力实现这一目标,但它不起作用。

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

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

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

var correctGuessed = correctGuessed || [];

为了解决这个问题,您可以通过在任何函数之外声明它来将正确的Guessed 声明为全局变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM