我几乎完成了我正在创建的个人子手项目的javascript逻辑。我遇到的最后一个问题之一是让程序识别“选择的单词”中是否使用了相同的字母。例如,当选择“忍者”作为“选择的单词”,并且用户选择“ n”时,我希望我的计数器变量能够识别出两个“ n”,然后将2加而不是1。
到目前为止,我的代码:
var secretWords = ["batman", "Donkey kong", "ninja",
"programming"];
var chosenWord = secretWords[Math.floor(Math.random()*secretWords.length)];
var guesses = 8;
console.log(chosenWord);
var letters = chosenWord.length;
var counter = 0;
var gameOver = guesses === 0;
console.log(guesses);
console.log(counter);
while(guesses !== 0){
const guess = prompt("GUESS A LETTER")
var guessLowerCase = guess.toLowerCase();
var isGuessedLetterInWord =
chosenWord.includes(guessLowerCase);
if (isGuessedLetterInWord) {
alert('nice'); counter ++;
} else {
alert('wrong'); guesses --;
}
}
if(counter === chosenWord.length){
alert("You Win!!");
}
if (guesses === 0){
alert("LOSER!");
}
一个简单的技巧是按字母和数字分割字符串。
let occurances = chosenWord.split(guessLowerCase).length - 1
或者您可以使用正则表达式搜索所有事件:
let occurances = [...chosenWord.matchAll(new RegExp(guessLowerCase, 'g'))].length