这是我的代码。我正在尝试制作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函数
答案 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
并比较每个索引等。