javascript - 将数组中字符串的首字母大写
问题描述
我正在尝试编写一个函数,该函数仅将名字和姓氏的第一个字母大写......关于如何处理这个问题的任何想法?
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);
推荐阅读
- node.js - NodeJS child_process.spawn() 截断长输出
- c++ - 使用 rxcpp 和 cpr 的计时器事件(获取请求)
- c++ - 在 C++ 中使用所有 32 位整数的算术溢出?
- python - 如何将列表中的特定项目称为另一个列表
- powershell - PowerShell:迭代多个变量未按预期工作
- c++ - 书中令人费解的段落:`Cross-Platform Development with Qt 6 and Modern C++`
- google-cloud-platform - GCP GKE 入口运行状况检查
- php - 在php中创建动态表单
- laravel - 无法进入最后一页和 bootstrap laravel 分页的倒数第二
- r - 如何将连续的数据点(集群)标记为不同的组