是否可以运行具有特定启动和停止索引的回调函数?我正在练习我的JS并且正在编写一个函数来将字符串转换为驼峰大小写(来自' - '或'_'分隔)而不改变字符串中第一个单词的大小写。基本上,在我将字符串拆分为单词数组后,我想调用.map()并在数组中的第二个单词上启动我的回调。 目前我有:
function toCamelCase(str){
return str.split(/\-|_/).map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
}
如何从.map()
开始str.split(/\-|_/)[1]
?
答案 0 :(得分:2)
简单来说,你不能。 .map
将迭代整个数组。
您可以将.map
链接到.slice
,但
function toCamelCase(str, start, stop){
return str.split(/\-|_/).slice(start, stop).map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
}
答案 1 :(得分:0)
Array.map()
总是迭代整个数组。如果索引为0,您可以使用索引(回调中的第二个参数)返回单词而不进行更改:
function toCamelCase(str){
return str.split(/\-|_/).map((word, i) => i ? word.charAt(0).toUpperCase() + word.slice(1) : word).join('');
}
console.log(toCamelCase('the_camels_toes'));

BTW - 您可以使用带有String.replace()
的正则表达式来创建驼峰案例:
function toCamelCase(str){
return str.replace(/_(\w)/g, (_, c) => c.toUpperCase());
}
console.log(toCamelCase('the_camels_toes'));