这是我的代码。我正在尝试制作刽子手应用程序。如何将我的用户输入"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
并比较每个索引等。