实现字符串单词首字母大写函数失败:返回原字符串求排查
问题分析与解决
你的代码思路方向是对的——先把字符串拆成单词数组,再处理每个单词首字母,但核心错误是只完成了首字母转大写,却没把修改后的内容替换回原单词,数组里的元素从头到尾没发生变化,所以最后拼接出来自然还是原字符串。
修正后的循环写法
function capitalizer (string) { // 用const声明变量,避免全局污染 const stringArray = string.split(' '); for (let i = 0; i < stringArray.length; i++) { const firstLetter = stringArray[i].charAt(0); const firstLetterCap = firstLetter.toUpperCase(); // 将大写首字母拼接原单词剩余部分,更新数组元素 stringArray[i] = firstLetterCap + stringArray[i].slice(1); } return stringArray.join(' '); } console.log(capitalizer('cat on the mat')); // 输出 "Cat On The Mat"
更简洁的map写法
用数组map方法可以简化循环逻辑,代码更紧凑清晰:
function capitalizer(string) { return string.split(' ') .map(word => word.charAt(0).toUpperCase() + word.slice(1)) .join(' '); }
额外注意点
原代码里的stringArray没有用let/const声明,会自动变成全局变量,容易引发意外的变量污染问题,建议始终用声明关键字定义变量。
内容的提问来源于stack exchange,提问作者hotpocket
相关产品推荐
相关产品推荐

