Javascript 如何修复拆分属性,给出未定义的

Javascript 如何修复拆分属性,给出未定义的,javascript,Javascript,我需要有一个正确的函数来测试,它给我一个全名中的字符串,我必须拆分它并使用for循环将字母更改为char“*”。我想让第一个大写字母保持可见:这是我的代码: var fullName = "Jozko Baci"; function testSamoUloha(fullName) { var splitString=fullName.split(""); for (var i=1;i<splitString[1].length;i++) { splitStr

我需要有一个正确的函数来测试,它给我一个全名中的字符串,我必须拆分它并使用for循环将字母更改为char“*”。我想让第一个大写字母保持可见:这是我的代码:

var fullName = "Jozko Baci";
function testSamoUloha(fullName) {
    var splitString=fullName.split("");
    for (var i=1;i<splitString[1].length;i++) {
        splitString[1].replace(splitString[1][i],"*");
    }
    var anonymName =splitString[0]+" "+splitString[1];
    console.log(anonymName);
    }
testSamoUloha();
var fullName=“Jozko Baci”;
函数testSamoUloha(全名){
var splitString=fullName.split(“”);

因为(var i=1;i可以用这样的东西来做

const fullName=“Jozko Baci”; //将名称拆分为单词(firstName、lastName) 让res=fullName.split(“”).map((word,wordIndex)=> //如果在名字后面 wordIndex>0 //隐藏word中除第一个字符以外的所有字符 ?word.split(“”).map((char,charIndex)=>(charIndex>0?'*':char)).join(“”) //否则,显示整个单词 :字 ).join(“”);//将单词重新连接在一起(firstName,lastName)
console.log(res);
上面的代码看起来不错,只是在这行中添加了一个补丁

拆分字符串[1]。替换(拆分字符串[1][i],“*”)

还为
var splitString=fullName.split(“”;
取代

fullName.split("");  // ['J', 'o', 'z', 'k', 'o',  ' ', 'B', 'a', 'c', 'i']

如果对字符串使用replace,它将在replace之后返回新字符串 ,它不会重写现有字符串

例如:

var a = "hello";
a.replace('o', '*') // returns hell*
a // has hello
但如果你这样做了

a = a.replace('o', '*') // returns hell* and rewrites a
a // hell*
类似地,添加此修复后,现有代码也可以正常工作

var fullName=“Jozko Baci”;
函数testSamoUloha(全名){
var splitString=fullName.split(“”);
for(var i=1;i字符串是不可变的(您不能更改它们),因此以下代码:

splitString[1].replace(splitString[1][i],"*");
在任何情况下都不起作用

我建议您创建一个临时字符串,然后在整个第二个单词上循环。如果循环的索引为0,则将字母添加到临时字符串中,否则添加一个
*

var fullName=“Jozko Baci”;
函数testSamoUloha(全名){
var splitString=fullName.split(“”);
//创建一个临时字符串
var tempString='';
//在整个第二个单词上循环
对于(var i=0;i0){
tempString+='*';
//否则,如果索引为0,则添加字母
//改为使用临时字符串
}否则{
tempString+=splitString[1][i];
}
}
//从函数返回字符串
返回splitString[0]+''+tempString;
}
//确保将全名作为参数传递

console.log(testSamoUloha(fullName));
如果希望缩短代码,可以使用以下正则表达式:

(?<=^.+\s\S+)\w

注意:
testSamoUloha
需要一个
fullname
参数,但您没有提供:
testSamoUloha();
应该是
testSamoUloha(fullname);
另外,将字母转换为星号的标准是什么?很抱歉,什么是星号?这是一个星号:
*
我已经尝试了从索引[1]开始的for循环从已经将字符串拆分为两部分,直到字符串的长度,然后将其再次提交到新的匿名变量,可以吗?哦,是的,我明白了,它对我帮助很大,非常感谢。让我知道此修复是否解决了您的问题….,如果可以,请进行投票并接受此回答非常感谢,可以理解,感谢您的帮助p!没问题,@RejzozroutkoTezbir。为之前的混乱道歉。&欢迎来到Stackoverflow。作为回报,我还没有完全理解这个函数。e在那里做什么?它来自哪里?
(?<=^.+\s\S+)\w