Rob*_*yan 15 javascript arrays string camelcasing
假设我有一个函数可以转换kebab-case为camelCase:
camelize("my-kebab-string") == 'myKebabString';
Run Code Online (Sandbox Code Playgroud)
我快到了,但我的代码也输出大写的第一个字母:
function camelize(str){
let arr = str.split('-');
let capital = arr.map(item=> item.charAt(0).toUpperCase() + item.slice(1).toLowerCase());
let capitalString = capital.join("");
console.log(capitalString);
}
camelize("my-kebab-string");
Run Code Online (Sandbox Code Playgroud)
小智 31
您也可以尝试正则表达式。
camelize = s => s.replace(/-./g, x=>x.toUpperCase()[1])
Run Code Online (Sandbox Code Playgroud)
仅查找后跟任何字符的连字符,并将其大写并将连字符+字符替换为大写字符。
bri*_*eje 13
为了保留您现有的代码,我刚刚添加了对索引的检查,item如果 item 为 0(falsy),该索引将返回而不是转换后的项目,因为问题只是您也将第一个项目大写,而你不应该。
简而言之,内联表达式变为: (item, index) => index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item,因为:
当然,这可能更简洁,也可能是单行,但我想尽可能接近您的代码,以便您了解错误所在:
function camelize(str){
let arr = str.split('-');
let capital = arr.map((item, index) => index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase());
// ^-- change here.
let capitalString = capital.join("");
console.log(capitalString);
}
camelize("my-kebab-string");Run Code Online (Sandbox Code Playgroud)
作为旁注,您可以在这里找到一个潜在的更清晰的答案:将任何字符串转换为驼峰式大小写
对于lodash用户:
_.camelCase('my-kebab-string') => 'myKebabString'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8504 次 |
| 最近记录: |