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

为什么JS手写首字母大写函数与预期结果全等比较返回false

问题原因

titleCase函数循环拼接单词时,每处理完一个单词都会额外追加一个空格,最终返回的字符串末尾会多出一个多余的空格,和无末尾空格的目标字符串做全等比对时自然返回false。
例如处理str1 = "I'm a little tea pot"时,titleCase(str1)的实际返回值为"I'm A Little Tea Pot "(末尾带空格),和你用于比对的目标字符串"I'm A Little Tea Pot"不一致,所以全等判断不通过。
而titleCaseMap使用的join(" ")方法只会在数组的元素与元素之间插入空格,不会在最后一个元素的末尾额外追加空格,返回结果和预期完全一致,比对返回true。

修复方案

可以在返回前调用trimEnd()方法移除末尾多余的空格即可:

function titleCase(str) {
  let toArray = str.split(" ")
  let allCapitalize = ""
  for (let x of toArray) {
    allCapitalize += x.charAt(0).toUpperCase() + x.slice(1).toLowerCase() + " "
  }
  // 移除末尾多余空格
  return allCapitalize.trimEnd()
}

也可以调整拼接逻辑,只在非最后一个单词后面加空格,不过用trimEnd()是成本最低的修复方式。

内容的提问来源于stack exchange,提问作者JuanPasténCastillo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:48:04