lodash camelCase实现原理

lodash 封装的方法通常不好奇的话也不会管它怎么实现的,直到遇到问题。。。
camelCase 是一个很常用的方法,将字符转换为小驼峰嘛,直到我发现 camelCase 将 ABCTest 转化成 abcTest 的时候才开始对其实现原理感到好奇。
我以为的小驼峰和camelCase以为的小驼峰究竟是不是一样?
字符串中的连续大写字母会被如何处理?
字符串中的特殊字符会被如何处理?

先看一组测试
在这里插入图片描述

一、camelCase代码实现

在这里插入图片描述

1、camelCase首先将字符串中的单引号和右单引号转换为空字符串

在这里插入图片描述

2、调用words方法拆分字符串

在这里插入图片描述
拆分规则如下:

  • 有自定义规则按自定义规则拆分
  • 没有自定义规则按字符类型为unicode或ascii拆分,无论unicode还是ascii都是通过match方法匹配字符串中符合规则的部分,因此不符合规则的部分被删除掉了(这正是字符串中%.特殊符号消失的原因)

3、对于通过words方法得到的数组执行reduce方法

先将所有字符转换为小写,并将除数组第一项外的字符首字母转换为大写,并合并为一个字符串
在这里插入图片描述

二、基于camelCase实现原理解释开头遇到的问题

在这里插入图片描述

1、ABCTest 转化成 abcTest

通过 words 拆分会得到 [‘ABC’,‘Test’],执行 reduce 回调后得到 ‘abcTest’

2、testAB 转化成 testAb

通过 words 拆分会得到 [‘test’,‘AB’],执行 reduce 回调后得到 ‘testAb’

3、aaa111aaa.aaa%aaa 转化成 aaa111AaaAaaAaa

通过 words 拆分会得到 [‘aaa’, ‘111’, ‘aaa’, ‘aaa’, ‘aaa’],执行 reduce 回调后得到 ’aaa111AaaAaaAaa’

4、最后看下lodash官方实例如何转换的

在这里插入图片描述__FOO_BAR__通过 words 拆分得到 [‘FOO’,‘BAR’],执行 reduce 回调得到 ‘fooBar’

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值