JavaScript实现句子偶数位单词转大写且保留奇数位单词原有大小写
问题原因
你的代码不符合预期的核心问题出在largeLetters函数的逻辑:你在处理数组索引为偶数(对应实际句子的第1、3、5等奇数位置)的单词时,额外调用了toLowerCase()方法将单词强制转小写,违背了“奇数位置单词保持原有大小写”的需求。
修复代码
仅需要修改largeLetters函数的三元表达式判断分支,奇数位置直接返回原单词即可:
function largeLetters(sentence) { // 索引%2==0对应句子第1、3、5位(奇数位置),保留原大小写直接返回 // 索引%2==1对应句子第2、4、6位(偶数位置),转全大写 return sentence.map((v, i) => i % 2 == 0 ? v : v.toUpperCase()).join(' '); } function sentenceToUpperCase(sentence) { sentence = sentence.split(' '); if (sentence.length == 1) { // 如果你不需要单单词强制转大写的特殊逻辑,这里可以直接返回sentence[0] sentence = sentence.toString().toUpperCase(); return sentence; } else { return largeLetters(sentence) }; }; console.log(sentenceToUpperCase("ThIs iS A seNteNCe")) // 输出结果:ThIs IS A SENTENCE
注:你给出的预期输出中第三个单词为
a,和“奇数位置保持原有大小写”的需求冲突,原输入第三个单词为A,按需求逻辑输出应为A才符合要求。如果是特殊场景要求可以自行添加额外转换逻辑。
简化优化
如果不需要单单词强制转大写的特殊处理,可以直接合并逻辑简化代码:
function sentenceToUpperCase(sentence) { return sentence .split(' ') .map((word, index) => index % 2 === 1 ? word.toUpperCase() : word) .join(' '); }
内容的提问来源于stack exchange,提问作者Floooorson
相关产品推荐
相关产品推荐

