如何将用户输入与存储在数组中的项目进行比较?

时间:2018-11-12 21:34:18

标签: javascript arrays user-input

这是我的代码。我正在尝试制作hangman应用。如何将我的用户输入“ userGuess”与从随机生成的单词“ word”分开的数组“ array”进行比较。

我想说的是,如果“ userGuess”等于打印到控制台的“ array”数组中的任何值:userGuess +“正确”。

$(document).ready(function(){     console.log(“ ready!”);

var randomWords = [
    "dog",
    "cat",
    "america",
    "bootcamp",
    "javascript",
    "philadelphia"
]
var word = randomWords[Math.floor(Math.random() * randomWords.length)]; {
    console.log(word);
}
var amount = word.length;
console.log(amount);

$("#display-word").on("click", function (event) {
    $("#word").html("New Word is: " + amount + " letters long.")
})

//event listener 
document.onkeyup = function (event) {
    var userGuess = event.key;
    console.log(userGuess);
    $("#guesses").append(userGuess + "-");

    var str = word;
    var array = str.split("");
    console.log(array);

    for (var i = 0; i < array.length; i++) {
        // console.log(array.length);
        if (userGuess === i) {
            console.log(userGuess + "is correct"); 

        }

    }














}//on key up

}); //doc.ready函数

5 个答案:

答案 0 :(得分:1)

protected final将返回defineClass,如果它不在答案列表中,或者不在答案列表中的索引

indexOf

答案 1 :(得分:0)

您已经进入了for循环,但是您正在将userGuess与索引进行比较,而不是将存储在该索引上的实际值进行比较。

此外,您可以使用break语句在找到匹配项后立即停止。

尝试一下:

for (var i = 0; i < array.length; i++) {
        // console.log(array.length);
        if (userGuess === array[i]) {
            console.log(userGuess + "is correct"); 
            break;
        }

    }

答案 2 :(得分:0)

您也可以使用Array.prototype.includes函数,尽管它是一个相对较新的函数,它取决于您要定位的浏览器版本。这将使您可以跳过for循环,并使代码更具可读性和简短性。

const input = 'input';
const answers = ['this', 'that'];
if(answers.includes(input)) {
   // do stuff
}

答案 3 :(得分:0)

从我可以看到的错误中,您的if语句试图比较索引(i)是否等于event.key,因此它永远不会返回true。

要访问数组中的实际项目,您需要使用以下代码:

if (userGuess === array[i]) {
  console.log(userGuess + " is correct"); 
} else {
  console.log(userGuess + "is not correct")
}

您还可以通过直接在字符串上使用include()方法来改善此问题。

if (word.includes(userGuess)) {
  console.log(userGuess + " is correct");
} else {
  console.log(userGuess + " is not correct");
}

我希望对您有帮助

答案 4 :(得分:0)

您可以简单地使用Array.includes。考虑一下:

var randomWords = [ "dog", "cat", "america", "bootcamp", "javascript", "philadelphia" ]

var word = randomWords[Math.floor(Math.random() * randomWords.length)];

var userGuess = ['a', 'b', 'c'];
var wordArray = word.split("");

userGuess.map(x => 
  console.log(
  'word:', word, 
  ', guess:', x, 
  ', result:', wordArray.includes(x) ? 'Correct' : 'Wrong!')
)

这是一个简化的示例,仅用于提供想法,但在您的情况下,只需使用includes,而无需执行for loop并比较每个索引等。