Javascript 将数组中字符串的首字母大写
我正在尝试写一个函数,它只将名字和姓氏的第一个字母大写。。。关于如何处理这个问题有什么想法吗Javascript 将数组中字符串的首字母大写,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试写一个函数,它只将名字和姓氏的第一个字母大写。。。关于如何处理这个问题有什么想法吗 const namesHardest = ['emIly sMith', 'angeliNA Jolie', 'braD piTt']; function capitalizeNames(peopleArray) { return peopleArray.toString().toLowerCase().split('').map(function(word) { return
const namesHardest = ['emIly sMith', 'angeliNA Jolie', 'braD piTt'];
function capitalizeNames(peopleArray) {
return peopleArray.toString().toLowerCase().split('').map(function(word) {
return (word.charAt(0).toUpperCase() + word.slice(1));
}).join(' ').split();
}
// set the resulting array to this variabble
const capitalizedNames = capitalizeNames(namesHardest);
capitalizedNames;
let=['emIly sMith','angeliNA Jolie','braD piTt'];
namesharst=namesharst.map(val=>{
let[first,last]=val.toLowerCase().split(“”);
first=first.replace(first[0],first[0].toUpperCase());
last=last.replace(last[0],last[0].toUpperCase());
返回`${first}${last}`
});
console.log(名称)代码>您的逻辑有点错误。首先,对于每个字符串,您需要将其按空格分割,以获得名字和姓氏。然后,可以将每个字符串的第一个字符升格。见下文:
const=['emIly sMith','angeliNA Jolie','braD piTt'];
const capitalizeName=(name)=>`${name[0].toUpperCase()}${name.slice(1)}`;
const capitalizeNames=(peopleArray)=>peopleArray.map(name=>{
const[first,last]=name.toLowerCase().split(“”);
返回`${capitalizeName(first)}${capitalizeName(last)}`;
});
log(大写名称(nameshest))
一个问题是使用array.toString-这会导致类似
'emIly sMith angeliNA Jolie braD piTt'
因此,您丢失了数组元素
您需要使用array.map单独处理每个元素
function capitalizeNames(peopleArray) {
return peopleArray.map(function(name) {
/* do something with each name *
})
}
您的另一个问题是split(“”)
将字符串拆分为字符-但您希望在空格上拆分它。。。i、 e.split(“”)
所以现在,我们有
function capitalizeNames(peopleArray) {
return peopleArray.map(function(name) {
return name.split(' ').map(function(word) {
/* do something with each part of name *
});
});
}
那么,现在,如何大写字符串-您的代码可以工作,但我更喜欢
word[0].toUpperCase() + word.slice(1).toLowerCase();
把它放在一起,你就会
function capitalizeNames(peopleArray) {
return peopleArray.map(function(name) {
return name.split(' ').map(function(word) {
return word[0].toUpperCase() + word.slice(1).toLowerCase();
});
});
}
或者,在ES2015+中,使用箭头函数(既然您的代码使用const
,为什么不使用所有ES2015+)
const=['emIly sMith','angeliNA Jolie','braD piTt'];
const capitalizeNames=peopleArray=>peopleArray.map(name=>
name.split(“”).map(word=>
word[0].toUpperCase()+word.slice(1).toLowerCase()
).加入(“”)
);
const capitalizedNames=大写名称(名称);
console.log(大写dnames)代码>对不起,我来晚了,我宁愿使用array.from和close
const=['emIly jack sMith','angeliNA Jolie','braD piTt'];
让conv=Array.from(nameshest,a=>a.toLowerCase().replace(/\b[a-z]/g,函数(字母){
回信.toUpperCase();
}))
console.log(conv)你能看到.split(“”)
的作用吗?i、 不是你想要的want@JaromandaX我认为问题甚至在toString()之前就已经存在了,不是吗?我只是不知道我可以用什么来代替。不,array.toString将把传入的数组作为一个字符串,用空格分隔-虽然,可能也不是你想要的-你需要分别处理数组的每个元素,比如return peopleArray.map(name=>name.split(“”).map(word=>word[0].toUpperCase()+word.slice(1) .toLowerCase()).join(“”))
一模一样。如果有一个像安东尼·斯图尔特·海德这样的名字怎么办我很少这样做:p通常只有当问题显示出诚实的尝试时:p我喜欢你的回答,顺便说一句,只是为了说明在JS:p中总有几种方法可以剥猫皮