javascript - 检查数组中的字符串无法正常工作
问题描述
我正在尝试使用 For 循环在数组中搜索字符串,并遍历数组的每个点的长度。如果字符串存在,它应该显示该字符串(在这种情况下,一个字母)。出于某种原因,即使该字母存在,输出也不会更新。
例如,说这个词是 DOG。输出数组看起来像“▢ ▢ ▢”。如果我猜到了“D”,它应该将输出数组更新为“D ▢ ▢”。这里的问题是,它没有这样做。
这是我与这部分相关的代码:
function encryptLetters() {
instructions.style.display = "none";
for (i = 0; i < magicyMagic.length; i++) {
if (magicyMagic.substring(i, i + 1) == " ") {
output[i] = "   ";
} else if (magicyMagic.substring(i, i + 1) == ".") {
output[i] = ".";
} else {
output[i] = " ▢"
}
}
document.getElementById("mysteryWord").innerHTML = output.join("");
firstTurn();
}
function player1() {
console.log("Player 1 is going.");
nowGoing = 1;
player1Elements.style.display = "block";
alert(playerName1 + " it is your turn. What do you guess?");
ask();
}
function ask() {
console.log("Prompting");
var guess = prompt("What letter would you like to guess?");
var playerGuess = guess.toUpperCase();
console.log(playerName1 + " guessed " + playerGuess);
checkGuessType(playerGuess);
}
function checkGuessType(playerGuess) {
console.log("Checking type...");
if (playerGuess.length > 1) {
console.log(playerName1 + " guessed a word.");
} else if (playerGuess == "A" || playerGuess == "E" || playerGuess == "I" || playerGuess == "O" || playerGuess == "U") {
console.log(playerName1 + " guessed a vowel.");
} else {
console.log(playerName1 + " guessed a consonant.");
}
checkForGuess(playerGuess);
}
function checkForGuess(playerGuess) {
console.log("Checking if letter is present...");
for (x = 0; x < magicyMagic.length; x++) {
if (playerGuess == magicyMagic.charAt(x)) {
console.log("Ding ding ding!");
lettersMatched = lettersMatched + 1;
isCorrect = true;
output[x] = playerGuess;
lettersMatched = 0;
}
}
if (isCorrect == false && playerGuess !== "") {
console.log("Player did not guess correctly...");
document.getElementById("pl1Messages").innerHTML = "There are no " + playerGuess + "'s in the word.";
lettersMatched = 0;
document.getElementById("lastMessage").innerHTML = "Player 2 (" + playerName2 + ") will now go.";
}
hasBeenGuessed.push(playerGuess);
console.log(hasBeenGuessed[0] + " has been added to the list. Players cannot guess this letter again.");
}
在控制台中,我只看到以下内容:
"The first player's name is Test1."
"The second player's name is Test2."
"The player(s) have been informed."
"The word is UGANDA"
"Player 1 is going."
"Prompting"
"Test1 guessed A"
"Checking type..."
"Test1 guessed a vowel."
"Checking if letter is present..."
"Ding ding ding!"
"Ding ding ding!"
"A has been added to the list. Players cannot guess this letter again."
尽管与该部分相关的 console.log() 语句出现在控制台中,但输出数组没有任何更新。我将如何解决这个问题?
PS 代码片段中没有看到的任何变量很可能是全局变量,我不确定这是否会改变任何东西。
编辑:这是所有相关变量 - 所有数组值都大写,但它仍然不起作用。
var playerName1;
var playerName2;
var nowGoing = 0;
var magicyMagic;
var isCorrect = false;
// ____ Trees (types of trees - 1)
var array1Trees = ["OAK", "ELM", "PINE", "BIRCH", "SPRUCE", "ASPEN", "MAPLE", "CEDAR", "REDWOOD", "CHERRY"];
// ____ (drinks - 2)
var array2Drinks = ["COKE", "FANTA", "SPRITE", "DR. PEPPER", "CRUSH", "WATER", "PEPSI", "LEMONADE", "MILK", "MOUNTAIN DEW"];
// ____ Man (superheroes - 3)
var array3Heroes = ["SPIDERMAN", "AQUAMAN", "BATMAN", "IRONMAN", "SUPERMAN", "ANTMAN", "HEMAN"];
// ____ (games - 4)
var array4Games = ["POKEMON", "MINECRAFT", "TETRIS", "VALORANT", "CALL OF DUTY", "ROBLOX", "SUPER SMASH BROS", "ANIMAL CROSSING", "TERRARIA", "ANGRY BIRDS"];
// ____ (places - 5)
var array5Places = ["CANADA", "NEW YORK", "TEXAS", "GUATEMALA", "PUERTO RICO", "JAMAICA", "THAILAND", "RUSSIA", "HOFFMAN ESTATES", "UGANDA"];
var output = [];
var lettersMatched = 0;
var hasBeenGuessed = [];
解决方案
字符串比较区分大小写。这意味着字母“e”与字母“E”不同。在您的代码中,您说被猜测的字母是元音,如果它等于“a”、“e”、“i”、“o”、“u”,但您没有检查“A”、“ E”、“I”、“O”、“U”。
因此,当输入为“E”时,您会得到“测试 1 猜到了一个辅音”。
如果您希望比较区分大小写,则应在支票中添加大写字母。如果您不关心区分大小写,可以在比较之前将函数toLowerCase()应用于变量 playerGuess。
推荐阅读
- c# - SolrNet Autofac - 使用 SolrPostConnection
- typescript - 类类型,包括静态方法
- python - 如何根据列和索引将两个数据帧相乘?
- javascript - Firefox 没有将正确的文件下载到机器上
- angular - 角度的反向代理返回 404 nginx
- azure-cosmosdb - 如何使用 c# 更新 cosmos db 中文档中的特定子值?
- textpad - 警告:线路
拆分为 64 KB - java - 使用 Java HtmlEditorKit 保存汉字
- apache-spark - 缓存嵌套列时,Spark 是否优化存储
- reporting-services - 评估 SSRS 报告标题中的参数