Javascript 替换数组中的字符

Javascript 替换数组中的字符,javascript,jquery,arrays,replace,character,Javascript,Jquery,Arrays,Replace,Character,我试图替换数组字符串中的字符,但它不起作用。 基本上你输入一个单词,然后用户只需输入一个字符就可以猜出它。如果该字符在单词中,则应将其替换为星号。 我可以用字符数组,但也可以用字符串,对吗 $(文档).ready(函数(){ $(“#div_字母”).hide(); var word_input=$('#word'); 单词数组=[]; 文字输入。按键(功能(e){ 如果(e.keyCode==13){//如果按enter键 var v_word_array=word_input.val();

我试图替换数组字符串中的字符,但它不起作用。 基本上你输入一个单词,然后用户只需输入一个字符就可以猜出它。如果该字符在单词中,则应将其替换为星号。 我可以用字符数组,但也可以用字符串,对吗

$(文档).ready(函数(){
$(“#div_字母”).hide();
var word_input=$('#word');
单词数组=[];
文字输入。按键(功能(e){
如果(e.keyCode==13){//如果按enter键
var v_word_array=word_input.val();//获取单词
可变字长
word_数组。push(v_word_数组);//将单词放入数组中
word\u length=v\u word\u array.length;//获取单词的长度
var stars=“*”;
对于(变量i=0;i字,[1]->*
$('div_word').hide();
$('div#u字母')。show();
$('#display')。文本(word#u数组[1]);
$(“#字母”)。按键(功能(e){//如果按下任何键
var_字母=$(本);
var char=String.fromCharCode(e.which);//获取哪个键
对于(var n=0;n键入“e”->“*e**”
console.log(word_数组);
}  
}
_字母.val(“”);
});
}
});
});

输入你的话

打一封信
显示阵列:
我正在创建一个对象
字母
,该对象将获取所有字母作为键,该值是一个数组,包含单词中字母的所有索引

单词
hey
的对象如下

{
    "h":[0],
    "e":[1],
    "y":[2]
}
我正在使用
数组#map()
创建一个星星数组

要知道在何处放置字母而不是星号,我使用
数组#find()
查找键入字母的键。如果结果是
未定义的
,则表示您尝试的字母不在单词中。如果已定义,我将用正确的字母替换字母索引处的星号

$(文档).ready(函数(){
$(“#div_字母”).hide();
var word_input=$('#word');
var word_数组=[];
var字母={};
文字输入。按键(功能(e){
如果(e.keyCode==13){
word_array=array.from(word_input.val());
字母=单词数组。减少((obj,字母,i)=>{
obj[字母]=obj[字母]| |[];
obj[letter].push(i);
返回obj;
}, {});
var stars=word\u array.map(l=>“*”);
$('div_word').hide();
$('div#u字母')。show();
$('#display').text(stars.join(“”);
$(“#字母”)。按键(功能(e){//如果按下任何键
var_字母=$(本);
var char=String.fromCharCode(e.which).toLowerCase();//获取哪个键
让keyLetter=Object.keys(letters).find(l=>l.toLowerCase()==char);
如果(关键字母){
字母[keyLetter].forEach(i=>stars[i]=char);
$('#display').text(stars.join(“”);
}
_字母.val(“”);
});
}
});
});

输入你的话

打一封信
显示阵列:
我正在创建一个对象
字母
,该对象将获取所有字母作为键,该值是一个数组,包含单词中字母的所有索引

单词
hey
的对象如下

{
    "h":[0],
    "e":[1],
    "y":[2]
}
我正在使用
数组#map()
创建一个星星数组

要知道在何处放置字母而不是星号,我使用
数组#find()
查找键入字母的键。如果结果是
未定义的
,则表示您尝试的字母不在单词中。如果已定义,我将用正确的字母替换字母索引处的星号

$(文档).ready(函数(){
$(“#div_字母”).hide();
var word_input=$('#word');
var word_数组=[];
var字母={};
文字输入。按键(功能(e){
如果(e.keyCode==13){
word_array=array.from(word_input.val());
字母=单词数组。减少((obj,字母,i)=>{
obj[字母]=obj[字母]| |[];
obj[letter].push(i);
返回obj;
}, {});
var stars=word\u array.map(l=>“*”);
$('div_word').hide();
$('div#u字母')。show();
$('#display').text(stars.join(“”);
$(“#字母”)。按键(功能(e){//如果按下任何键
var_字母=$(本);
var char=String.fromCharCode(e.which).toLowerCase();//获取哪个键
让keyLetter=Object.keys(letters).find(l=>l.toLowerCase()==char);
如果(关键字母){
字母[keyLetter].forEach(i=>stars[i]=char);
$('#display').text(stars.join(“”);
}
_字母.val(“”);
});
}
});
});

输入你的话

打一封信
显示阵列:
我只是把这个词变成了一本字典,然后用它来确定在掩码中替换字符的位置

我故意省略了用户交互代码,因为这是多余的需求

见工作

只使用了一些map reduces。您知道何时需要使用reduce,因为您将拥有一个数组,并且希望返回一个值


如果有什么需要明确说明的话,只需说出来——但日志很容易显示每个阶段发生的情况。

我只是将这个词转换成字典,然后用它来确定在掩码中替换字符的位置

我故意省略了用户交互代码,因为这是多余的需求

见工作

只使用了一些map reduces。您知道何时需要使用reduce,因为您将拥有一个数组,并且希望返回一个值


如果有什么需要明确说明的,只需说出来-但是日志很容易显示每个阶段发生的情况。

只是确认-这是一个刽子手游戏,对吗?是的,这是一个刽子手游戏这对一个对象很容易-如果你将每个角色及其索引中的所有键都包括在内