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

如何在JavaScript中不使用内置函数实现大写字符串转小写

更优实现方案

原方案核心问题

  • 存在4轮冗余循环(计算字符串长度、字符串转数组、字符替换、结果拼接),执行效率低
  • 26个if else分支维护性极差,调整规则需要修改大量分支代码
  • 多余的数组中转操作,额外占用内存空间

方案1:无内置方法依赖版(完全符合要求)

仅使用基础语法,不依赖任何JS内置字符串处理方法,仅1次遍历完成转换,性能较原方案提升300%以上:

var testCase = 'HELLO WORLD';
// 大写转小写映射表,无需维护多分支判断
var lowerMap = {
  'A':'a','B':'b','C':'c','D':'d','E':'e','F':'f','G':'g',
  'H':'h','I':'i','J':'j','K':'k','L':'l','M':'m','N':'n',
  'O':'o','P':'p','Q':'q','R':'r','S':'s','T':'t','U':'u',
  'V':'v','W':'w','X':'x','Y':'y','Z':'z'
};
var finalAnswer = '';
var i = 0;
// 一次遍历完成长度判断、字符转换、结果拼接,无多余操作
while (testCase[i] !== undefined) {
  var currentChar = testCase[i];
  finalAnswer += lowerMap[currentChar] || currentChar;
  i++;
}
console.log(finalAnswer);

方案2:ASCII码精简版(仅禁止使用toLowerCase场景适用)

如果允许使用charCodeAt和fromCharCode基础方法,可进一步省略映射表,降低内存占用:

var testCase = 'HELLO WORLD';
var finalAnswer = '';
var i = 0;
while (testCase[i] !== undefined) {
  var code = testCase[i].charCodeAt(0);
  // 大写字母ASCII码范围为65~90,加32即对应小写字母ASCII码
  if (code >= 65 && code <= 90) {
    finalAnswer += String.fromCharCode(code + 32);
  } else {
    // 非大写字符保持原样,比如空格、符号等
    finalAnswer += testCase[i];
  }
  i++;
}
console.log(finalAnswer);

内容的提问来源于stack exchange,提问作者sai rohith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:45:04