从特定索引开始.map(callback())

时间:2018-04-16 16:15:48

标签: javascript

是否可以运行具有特定启动和停止索引的回调函数?我正在练习我的JS并且正在编写一个函数来将字符串转换为驼峰大小写(来自' - '或'_'分隔)而不改变字符串中第一个单词的大小写。基本上,在我将字符串拆分为单词数组后,我想调用.map()并在数组中的第二个单词上启动我的回调。 目前我有:

function toCamelCase(str){
  return str.split(/\-|_/).map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
}

如何从.map()开始str.split(/\-|_/)[1]

2 个答案:

答案 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'));