如何实现数组中姓名字符串的名和姓首字母大写?
解决数组中姓名首字母大写、其余小写的问题
咱们先看看你原来的函数为啥没实现预期效果:
- 你先把整个数组转成字符串,这会让所有姓名连在一起,直接丢失了数组每个元素的独立性
split('')是把字符串拆成单个字符,而不是按单词拆分,后续的map处理的是单个字符,这完全搞错了处理对象- 最后
split()不带参数的操作也没法把混乱的字符串还原成正确的姓名数组
正确的实现思路
- 遍历输入数组的每一个姓名元素
- 对每个姓名,先统一转成全小写,避免原字符串中随机大写的干扰
- 把姓名按空格拆分成名和姓两个单词(假设姓名都是“名 姓”的格式)
- 对每个单词,将首字母转为大写,剩下的字母保持小写
- 把处理好的名和姓拼接回完整姓名
- 把所有处理后的姓名收集起来,返回新数组
正确代码实现
const namesHardest = ['emIly sMith', 'angeliNA Jolie', 'braD piTt']; function capitalizeNames(peopleArray) { // 遍历每个姓名 return peopleArray.map(name => { // 转成全小写后按空格拆分成单词 return name.toLowerCase().split(' ').map(word => { // 单词首字母大写 + 剩余部分 return word.charAt(0).toUpperCase() + word.slice(1); }).join(' '); // 把处理后的单词拼接回姓名 }); } const capitalizedNames = capitalizeNames(namesHardest); console.log(capitalizedNames); // 输出: ["Emily Smith", "Angelina Jolie", "Brad Pitt"]
这段代码里用了两次map:第一次遍历数组中的每个姓名,第二次遍历每个姓名拆分后的单词,这样就能精准处理每个单词的首字母大写需求啦。
内容的提问来源于stack exchange,提问作者user8227859
相关产品推荐
相关产品推荐

