Javascript 如何进行测验';它的暗示就像《反应》中的刽子手游戏

Javascript 如何进行测验';它的暗示就像《反应》中的刽子手游戏,javascript,reactjs,algorithm,Javascript,Reactjs,Algorithm,我想做的是: 如果正确答案是: 你好 那么暗示就是 _e_uuo 条件 答案的长度各不相同 隐藏字符的数量是随机的 以下是我尝试过的: 函数makeHint(字符串){ 常量indexOne=xon.random(0,string.length); const indexTwo=2;.random(0,string.length); const indexThree=2;.random(0,string.length); 常量myArray=string.split(“”); const cha

我想做的是:

如果正确答案是:

你好

那么暗示就是

_e_uuo

条件

  • 答案的长度各不相同
  • 隐藏字符的数量是随机的
  • 以下是我尝试过的:

    函数makeHint(字符串){
    常量indexOne=xon.random(0,string.length);
    const indexTwo=2;.random(0,string.length);
    const indexThree=2;.random(0,string.length);
    常量myArray=string.split(“”);
    const charOne=myArray.splice(indexOne,1,myArray[indexOne]);
    const charTwo=myArray.splice(indexOne,1,myArray[indexTwo]);
    const charThree=myArray.splice(indexOne,1,myArray[indexThree]);
    返回myArray
    .map((字符)=>
    .拼接(indexOne,1,charOne)
    .拼接(索引2,1,图表2)
    .拼接(索引三,1,图表三)
    .加入(“”);
    }
    
    我的代码看起来很糟糕,但不起作用:( 我完全不知道。 我该修什么

    谢谢。

    问题 我看到的一个问题是,您的解决方案无法处理动态提示创建,即您已经硬编码了所需的数量。第二个问题是,您的随机字符选择没有与任何其他选择隔离

    解决方案 我建议您使用
    string
    hintsNumber
    值来动态创建提示。从已屏蔽的字符串副本开始,然后迭代,直到替换了适当数量的提示

    const makeHint = (string, hints = 3) => {
      let hintString = string.replaceAll(/./g, "_");
      let hintsRemaining = hints;
    
      while (hintsRemaining) {
        const i = Math.floor(Math.random() * hintString.length);
        if (hintString.charAt(i) === "_") {
          hintString =
            hintString.substring(0, i) +
            string.charAt(i) +
            hintString.substring(i + 1);
          hintsRemaining--;
        }
      }
      return hintString;
    };
    
    constmakehint=(字符串,提示=3)=>{
    设hintString=string.replaceAll(//g,“”);
    让hintsRemaining=提示;
    同时(剩余的部分){
    const i=Math.floor(Math.random()*hintString.length);
    if(hintString.charAt(i)==”){
    辛茨串=
    hintString.substring(0,i)+
    字符串字符(i)+
    hintString.substring(i+1);
    辛茨剩余--;
    }
    }
    返回铰链串;
    };
    log(makeHint(“someBigWord”,0));
    log(makeHint(“someBigWord”,1));
    log(makeHint(“someBigWord”,2));
    log(makeHint(“someBigWord”,3));
    log(makeHint(“someBigWord”,4));
    
    console.log(makeHint(“someBigWord”,5));
    我将使用猜测字符数组来完成此操作。然后,您可以将字符串拆分为字符数组,并检查数组中是否出现了每个字符。如果该字符已被猜测,则如果未显示,则显示该字符。对于猜测的字符,使用关联数组/映射而不是普通数组可能更为有效。
    const word='hello';const guessChars=['e','o'];word.split('').map(c=>guessChars.includes(c)?c:''u')。join(';