Javascript 如何进行测验';它的暗示就像《反应》中的刽子手游戏
我想做的是: 如果正确答案是: 你好 那么暗示就是 _e_uuo 条件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
函数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(';