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



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

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

我怎样才能让.map()str.split(/-|_/)[1]开始?

简单来说,你不能。 .map将遍历整个数组。不过,您可以将.map链接到.slice

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

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

顺便说一句 - 您可以将正则表达式与 String.replace() 一起使用来创建驼峰大小写:

function toCamelCase(str){
  return str.replace(/_(w)/g, (_, c) => c.toUpperCase());
}
console.log(toCamelCase('the_camels_toes'));

最新更新