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

能否为JavaScript的.map()指定起止索引执行回调函数?

实现短横线/下划线转驼峰命名的函数

嘿,刚好能帮你完善这个驼峰转换的函数!你的思路是对的——先分割字符串,再用map处理,但关键是要利用map回调里的索引参数来区分第一个单词和后续单词,这样就能保证首单词的大小写完全不变。

完整实现代码

function toCamelCase(str) {
  // 用正则分割短横线或下划线,得到单词数组
  return str.split(/[-_]/).map((word, index) => {
    // 第一个单词直接返回,不做任何大小写修改
    if (index === 0) {
      return word;
    }
    // 从第二个单词开始:首字母大写,其余字符保持原大小写
    return word.charAt(0).toUpperCase() + word.slice(1);
  }).join(''); // 把处理后的单词数组拼接成字符串
}

代码详解

  • 分割字符串:split(/[-_]/) 用正则表达式匹配短横线或下划线,把输入字符串拆成独立的单词数组,比如 "hello-world_foo" 会变成 ["hello", "world", "foo"]。
  • map处理逻辑:map的回调函数接收两个参数:当前word和它的index。我们通过index === 0判断是否是第一个单词,直接返回原单词;后续单词则把首字母转大写,剩下的字符保持原样(比如"world"变成"World","BAR"变成"BAR")。
  • 拼接结果:最后用join('')把处理后的单词数组合并成一个驼峰命名的字符串。

测试用例验证

试试这些场景,效果完全符合需求:

  • toCamelCase("hello-world") → 返回 "helloWorld"
  • toCamelCase("Hello_World") → 返回 "HelloWorld"
  • toCamelCase("FOO-BAR-baz") → 返回 "FOOBarBaz"
  • toCamelCase("my-long-example_string") → 返回 "myLongExampleString"

内容的提问来源于stack exchange,提问作者Kyle Rhodes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:12:05