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



这是我的代码。我正在尝试制作刽子手应用程序。如何将我的用户输入"userGuess"与从随机生成的单词"word"中分离出来的数组"array"进行比较。

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

$(文档(.ready(函数(({console.log("就绪!"(;

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函数

indexOf将返回-1,如果它不在答案列表中,或者不在答案中的索引中

answers = ["orange", "apple", "pear"]
if (answers.indexOf(userGuess) != -1) {
console.log(userGuess + "is correct"); 
}

您已接近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;
}
}

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

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

从我所看到的错误是在if语句中,您试图比较index(I(是否等于event.key,因此它永远不会返回true。

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

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

您还可以通过直接在字符串上使用includes((方法来改进这一点。

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

我希望它能帮助

您可以简单地使用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并比较每个索引等。

相关内容

  • 没有找到相关文章

最新更新