You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:45:06