写该系列文章的初衷是“让每位前端工程师掌握高频知识点,为工作助力”。这是前端百题斩的第22斩,希望朋友们关注公众号“执鸢者”,用知识武装自己的头脑。
相信大家都遇到过这样一个问题:将'-'连接的字符串转换为驼峰形式,例如将hello-word转换为helloWorld。这个问题虽然简单,但是如果仅仅用一种方案进行解决不能体现 出自己的能力,如果要想表现的与众不同,就要用多种方式解决。下面就通过三种方式解决该问题。
22.1 方式一
首先来看看第一种方案,是在字符串维度进行操作,其思想可以归结为以下几个步骤:
按照'-'进行分割;
从第二个元素开始进行遍历,将每个元素的首字母变为大写的;
将数组中的元素进行连接
// 操作字符串数组
function transformStr2CamelCase1(str) {
if (typeof(str) !== 'string') {
return '';
}
const strArr = str.split('-');
for (let i = 1; i < strArr.length; i++) {
strArr[i] = strArr[i].charAt(0).toUpperCase() + strArr[i].substring(1);
}
return strArr.join('');
}
console.log(transformStr2CamelCase1('hello-world')); // helloWorld
22.2 方式二
第二种方案是在字符维度进行动刀,因为小写变大写的字符都是在'-'后面的字符,所以在遇到'-'后将其变为大写,其步骤如下:
首先将字符串分割成字符数组;
遍历该数组,当遇到'-'元素,删除该元素;
将后慢的字符元素变为大写;
连接数组,返回结果。
// 操作字符数组
function transformStr2CamelCase2(str) {
if (typeof(str) !== 'string') {
return '';
}
const strArr = str.split('');
for (let i = 0; i < strArr.length; i++) {
if (strArr[i] === '-') {
// 删除-
strArr.splice(i, 1);
// 将此处改为大写
if (i < strArr.length) {
strArr[i] = strArr[i].toUpperCase();
}
}
}
return strArr.join('');
}
console.log(transformStr2CamelCase2('hello-world')); // helloWorld
22.3 方式三
方式三则是利用正则的方式去匹配字符串中的内容,然后将匹配到的内容替换掉,其步骤如下:
确定对应的正则表达式;
利用replace方法,将对应的小写字符转换为大写。
// 利用正则
function transformStr2CamelCase3(str) {
if (typeof(str) !== 'string') {
return '';
}
const reg = /-(\w)/g;
return str.replace(reg, function ($0, $1) {
return $1.toUpperCase();
});
}
console.log(transformStr2CamelCase3('hello-world')); // helloWorld
1.如果觉得这篇文章还不错,来个分享、点赞、在看三连吧,让更多的人也看到~
2.关注公众号执鸢者,领取学习资料,定期为你推送原创深度好文
3.关注公众号进群,里面大佬多多,一起向他们学习
1. 前端百题斩[001]——typeof和instanceof
3. 前端百题斩【003-004】——从基本类型、引用类型到包装对象
6. 前端百题斩【007】——js中必须知道的四种数据类型判断方法
7. 前端百题斩【008-009】——从JavaScript的代码执行过程到函数执行过程
8. 前端百题斩【010】——通俗易懂的JavaScript执行上下文
10. 前端百题斩【012】——js中作用域及作用域链的真面目
12. 前端百题斩【014】——js中的这些“this”指向都值得了解
13. 前端百题斩【015】——快速手撕call、apply、bind
14. 前端百题斩【016】——原型、构造函数和实例之间的奇妙关系
15. 前端百题斩【017】——一基础、二主线、双机制理解原型链
18. 前端百题斩【020】——竟然有五种方式实现flat方法
21. 2021 年前端宝典【超三百篇】
22. 前端也要懂机器学习(上)
23. 前端也要懂机器学习(下)
24. 学架构助力前端起飞
26. Vue源码思想在工作中的应用
27. 一文搞定Diff算法