我正在尝试编写一个函数,它只会将名字和姓氏的首字母大写……关于如何处理这个问题有什么想法吗?
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;
最佳答案
一个问题是使用 array.toString - 导致像这样的字符串
'emIly sMith angeliNA Jolie braD piTt'
所以,你丢失了数组元素
您需要使用 array.map 单独处理每个元素
function capitalizeNames(peopleArray) {
return peopleArray.map(function(name) {
/* do something with each name *
})
}
您的另一个问题是 split('')
将字符串拆分为字符 - 但您想将其拆分为空格...即 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 namesHardest = ['emIly sMith', 'angeliNA Jolie', 'braD piTt'];
const capitalizeNames = peopleArray => peopleArray.map(name =>
name.split(' ').map(word =>
word[0].toUpperCase() + word.slice(1).toLowerCase()
).join(' ')
);
const capitalizedNames = capitalizeNames(namesHardest);
console.log(capitalizedNames);
关于javascript - 将数组中字符串的首字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223536/