用replace()缩写两个单词的名称



有人知道这个函数为什么不返回第二个初始值吗?应为:"S"。H',改为:"S">

function abbrevName('Sam Hayes'){
let initials = 'x.x';
for (let i = 0; i < name.length; i++) {
if (name[i] === name[i].toUpperCase()) {
initials = initials.replace('x', name[i]);
} 
}
return initials;
}

它的空格被识别为大写

function abbrevName(name){
let initials = 'x.x'
for (let i = 0; i < name.length; i++) {
if (name[i] === name[i].toUpperCase() && name[i]!= " ") {
console.log(name[i].toUpperCase())
initials = initials.replace('x', name[i])
} 
}
return initials;
}

console.log(abbrevName('Sam Hayes'))

您需要执行name[i] === name[i].toUpperCase(),而不是name[i].toLowerCase() === name[i].toUpperCase(),因为空间将通过前一次检查。

您可以使用Array.split((例如

function abbrevName(name){
const arr = name.split(" ");
const initials = arr[0][0]+"."+arr[1][0];
return initials 
}

最新更新