能否为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
相关产品推荐
相关产品推荐

