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中总有几种方法可以剥猫皮