如何在JavaScript中reverse()后交换每个单词首尾字母的大小写?
问题分析与解决方案
原代码仅处理了反转后单词最后一个字符的小写转换,完全忽略了反转后第一个字符的大小写切换,逻辑冗余且无法实现“交换首尾字母大小写”的需求。
修正后的代码
let reverseWords = str => { console.log(`Input: ${str}`); // 分割单词并过滤空字符串(处理连续空格情况) let words = str.split(" ").filter(word => word.length > 0).map(word => { let chars = word.split("").reverse(); const len = chars.length; // 仅处理长度大于1的单词,单字符单词无需切换首尾(首尾为同一字符) if (len > 1) { // 切换首字符大小写 chars[0] = chars[0] === chars[0].toUpperCase() ? chars[0].toLowerCase() : chars[0].toUpperCase(); // 切换尾字符大小写 chars[len - 1] = chars[len - 1] === chars[len - 1].toUpperCase() ? chars[len - 1].toLowerCase() : chars[len - 1].toUpperCase(); } return chars.join(''); }); return words.join(' '); } console.log(`Output: ${reverseWords("I am Firdaus")}`); // 输出:I ma Suadrif
关键改进点
- 补全反转后首字符的大小写切换逻辑,实现真正的“首尾大小写交换”
- 增加空字符串过滤,避免连续空格导致的无效处理
- 仅对长度大于1的单词执行转换,跳过单字符单词的无意义操作
- 用简洁的三元表达式替代冗余条件判断,提升代码可读性
内容的提问来源于stack exchange,提问作者Naufal
相关产品推荐
相关产品推荐

