Javascript Hangman-替换字符串中的字符

Javascript Hangman-替换字符串中的字符,javascript,Javascript,我见过关于堆栈溢出的类似问题,但我没有看到任何具体的帮助。我的问题是,我似乎不知道如何用正确猜测的字母替换hiddenWord中的破折号,同时保留未猜测字母的破折号。这是我到目前为止所拥有的,我甚至不确定它是否在正确的轨道上 <script type="text/javascript"> // Declaration of Variables var wordPool= ["Alf", "MarriedWithChildren", "Cheers", "MASH", "C

我见过关于堆栈溢出的类似问题,但我没有看到任何具体的帮助。我的问题是,我似乎不知道如何用正确猜测的字母替换
hiddenWord
中的破折号,同时保留未猜测字母的破折号。这是我到目前为止所拥有的,我甚至不确定它是否在正确的轨道上

    <script type="text/javascript">

// Declaration of Variables 
var wordPool= ["Alf", "MarriedWithChildren", "Cheers", "MASH", "CharlesInCharge", "FmailyTies", "KnightRider", "MagnumPI", "MiamiVice"];
var lives = 6;
var myLetter;
var letter;
var wordChoice;
var hiddenWord;
var i;
var enter;

// Selects word randomly from wordPool[]. Then replaces the letters with "- ".

function selectedWord() {

var number = Math.round(Math.random() * (wordPool.length - 1));

wordChoice = wordPool[number];

for(i = 0; i < wordChoice.length; i++){
    hiddenWord = wordChoice.replace(/./g,"- ");
}
console.log(hiddenWord);
}

// Gives myLetter a value of key pressed. If key is "Enter" selectedWord() initiates 

document.onkeyup = function(event) {

var myLetter = event.key;
    if(myLetter === "Enter"){
        selectedWord();
    }
    console.log(myLetter);
}

</script>

//变量声明
var wordPool=[“阿尔夫”、“有孩子的婚姻”、“干杯”、“马什”、“查理负责人”、“Fmailytes”、“骑士”、“马格南皮”、“MiamiVice”];
var=6;
var myLetter;
var字母;
词汇选择;
变量hiddenWord;
var i;
var输入;
//从单词库[]中随机选择单词。然后将字母替换为“-”。
函数selectedWord(){
var number=Math.round(Math.random()*(wordPool.length-1));
wordChoice=wordPool[number];
对于(i=0;i
我已经看到了jQuery和PHP的一些内容,但我必须在类的javascript中这样做。任何帮助将不胜感激,如果这已经解决之前,请让我知道

试试看
hiddenWord+=“-”
取代

hiddenWord+=wordChoice[i]。替换(//g,“-”

以下是一个示例:

var word = "do this";
var displayWord = [];

for (var i = 0; i < word.length; i++) {//build array
    if (word[i] === " ") {
      displayWord.push(" ");
    } else {
      displayWord.push("-");
    }
  }

function update(userGuess) {//update array
  for (var i = 0; i < word.length; i++) {
    if (word[i] === userGuess) {
      displayWord[i] = userGuess;
    } else {
      displayWord[i] = displayWord[i];
    }
  }
}

//Guess letters
update("h");
update("o");

displayWord = displayWord.join('');//convert to string

alert(displayWord);
var word=“这样做”;
var displayWord=[];
对于(var i=0;i

检查笔-

您可以检查字串中的每个字符,将其与所选字符进行比较,如果是相同的字符,则将其替换

我稍微修改了你的代码,以反映你在寻找什么。 还要确保所有字符都小写,以便于玩家使用

// Declaration of Variables 
var wordPool= ["Alf", "MarriedWithChildren", "Cheers", "MASH", "CharlesInCharge", "FmailyTies", "KnightRider", "MagnumPI", "MiamiVice"];
var lives = 6;
var myLetter;
var letter;
var wordChoice;
var hiddenWord;
var i;
var enter;

// Change character to selected one
function checkCharacter(n) {
  for(i = 0; i < wordChoice.length; i++){
    console.log(wordChoice[i].toLowerCase() + "==" + n);
    if(wordChoice[i].toLowerCase() == n.toLowerCase()){
      hiddenWord = setCharAt(hiddenWord,i,n);
    }
  }
  console.log("[" + hiddenWord + "]");
}

function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substr(0,index) + chr + str.substr(index+1);
}

// Selects word randomly from wordPool[]. Then replaces the letters with "- ".

function selectedWord() {
  var number = Math.round(Math.random() * (wordPool.length - 1));
  wordChoice = wordPool[number];
  hiddenWord = wordChoice.replace(/./gi,"-");
  console.log(wordChoice + "[" + hiddenWord + "]");
}

// Gives myLetter a value of key pressed. If key is "Enter" selectedWord() initiates 

document.onkeyup = function(event) {
    var myLetter = event.key;
    if(myLetter === "Enter"){
        if(lives == 0){
           selectedWord();
           lives = 6;
         }else{
           lives--;
         }
    }
    console.log(myLetter);
    checkCharacter(myLetter);
}

//Select a random word at start
selectedWord();
//变量声明
var wordPool=[“阿尔夫”、“有孩子的婚姻”、“干杯”、“马什”、“查理负责人”、“Fmailytes”、“骑士”、“马格南皮”、“MiamiVice”];
var=6;
var myLetter;
var字母;
词汇选择;
变量hiddenWord;
var i;
var输入;
//将字符更改为选定字符
函数校验字符(n){
对于(i=0;istr.length-1)返回str;
返回str.substr(0,索引)+chr+str.substr(索引+1);
}
//从单词库[]中随机选择单词。然后将字母替换为“-”。
函数selectedWord(){
var number=Math.round(Math.random()*(wordPool.length-1));
wordChoice=wordPool[number];
hiddenWord=wordChoice.replace(//gi,“-”);
log(wordChoice+“[”+hiddenWord+“]”);
}
//给MyLitter一个按键按下的值。如果键为“回车”,则selectedWord()启动
document.onkeyup=函数(事件){
var myLetter=event.key;
如果(myLetter==“输入”){
如果(寿命==0){
selectedWord();
寿命=6;
}否则{
生命--;
}
}
控制台日志(myLetter);
校验字符(myLetter);
}
//在开头随机选择一个单词
selectedWord();
我制作了一个工作和可玩的JSFIDLE:

您可能自己就能找到代码,但我所采用的算法只是遍历单词选择并找到该字母的所有索引。然后使用该索引替换HiddenWords中的破折号确保在比较字母时,它们的大小写相同,因此当您键入
m
时,您可以在
MagnumPI
中猜测
m
m
。我认为jQuery在基本字符串操作方面根本帮不了您。HiddenWorde最初是未定义的,因此,
hiddenWord+=
将抛出一个错误。但那不是OP的问题。哦,我的错。我懂了。问题是实现游戏的主要功能,即显示隐藏世界的正确字母。我的错@TRR88重点是自己尝试一下,当有些东西不起作用时,你就把你的问题贴出来。这不是我们的家庭作业,是你的。谢谢你的帮助!非常感谢你的帮助。我一辈子都不知道如何检查和替换这封信。我参加了一个加速项目,所以Javascript是一个为期一周的速成课程。没问题,我用一个有效的JSFIDLE编辑了解决方案,只需遵循链接即可。祝你好运!