lodash.js是一款超火的js库,在npm上平均周下载量达到了惊人的12,374,096,github start36K!大量框架都用到了lodash,包括拥有123kstart的vue

本文对比lodash英文文档,加上一些小栗子和个人的经验~~,希望能帮到你们

lodash采用了immutable的思想,永远不会改变原数据,而是会返回一个新的结果

String 字符串操作

camelCase 转换驼峰命名

_.camelCase([string=''])


console.log(_.camelCase('Foo Bar'))
// => 'fooBar' console.log(_.camelCase('--foo-bar--'))
// => 'fooBar' console.log(_.camelCase('__FOO_BAR__'))
// => 'fooBar' console.log(_.camelCase('/\__FOO_BAR__*\9'))
// 'fooBar9' console.log(_.camelCase('fooBarbar_bar'))
// fooBarbarBar

字符串中非数字和字母都会被过滤掉,然后再转换为驼峰

capitalize 转换大写

_.capitalize([string=''])


console.log(_.capitalize('FRED'));
// => 'Fred'

联想: 同string.prototype.toLocaleUpperCase();

deburr 清理符号

_.capitalize([string=''])

deburr转换 Latin-1 SupplementLatin Extended-A 为普通拉丁字母并且移除变音符号


_.deburr('déjà vu');
// => 'deja vu'

一般用不到...

endsWith 判断是否是某个字符串结尾

_.endsWith([string=''], [target], [position=string.length])


console.log(_.endsWith('abcdef3', 'c', 3))
// true
console.log(_.endsWith('abcdef3', 'c', 2))
// false

主要是第三个参数,不填表示检查整个字符串,有值代表从左截取几个字符,从截取的字符中进行判断

ECMAScript 6中已经加入string.prototype.endsWith()方法

escape 转义html实体字符

_.escape([string=''])

会将&装换成&amp, < -> &lt, > -> &gt '' -> &quot。其他转义字符,如:×(乘号),÷(除号)等不会转义,请用he这样的专业处理转义的库


console.log(_.escape(`a as &lt;a&gt; &amp;'"" *`))
// a as &amp;lt;a&amp;gt; &amp;amp;&amp;#39;&amp;quot;&amp;quot; *

escapeRegExp 转义正则表达式特殊字符

_.escapeRegExp([string=''])

正则表达式中的特殊字符都会加''处理


console.log(_.escapeRegExp('[lodash](https://lodash.com...\\\\/)'))
// \[lodash\]\(https://lodash\.com\.\.\.\\\\/\)

kebabCase 转换成kebabCase格式

总结: 存在四种case格式

  • CamelCase: TheQuickBrownFoxJumpsOverTheLazyDog
  • SnakeCase: the_quick_brown_fox_jumps_over_the_lazy_dog
  • KebabCase: the-quick-brown-fox-jumps-over-the-lazy-dog
  • Studlycaps: tHeqUicKBrOWnFoXJUmpsoVeRThElAzydOG

查看case的具体文档

其他转换case语法通camelCase

lowerCase 转换小写

_.lowerCase([string=''])


_.lowerCase('--Foo-Bar--');
// =&gt; 'foo bar' _.lowerCase('fooBar');
// =&gt; 'foo bar' _.lowerCase('__FOO_BAR__');
// =&gt; 'foo bar'

capitalize

联想: string.prototype.toLocaleLowerCase

lowerFirst 转换第一个字符为小写


console.log(_.lowerFirst('DS'))
// dS
console.log(_.lowerFirst('__DS'))
// __DS

无法过滤非字母字符

pad 填充字符

_.pad([string=''], [length=0], [chars=' '])
有三个参数: 原字符串,长度,填充字符

如果原字符串长度短于给定的长度,则原字符串左右两边会填充指定字符(默认为空格),如果不能平均分配则会被截断。


_.pad('abc', 8);
// =&gt; ' abc ' _.pad('abc', 8, '_-');
// =&gt; '_-abc_-_' _.pad('abc', 3);
// =&gt; 'abc'

padEnd 在结尾处填充字符


_.padEnd([string=''], [length=0], [chars=' '])

如果原字符串长度短于给定的长度,则原字符串右边会填充指定字符(默认为空格),如果填充字符超出长度则会被截断


_.padEnd('abc', 6);
// =&gt; 'abc ' _.padEnd('abc', 6, '_-');
// =&gt; 'abc_-_' _.padEnd('abc', 3);
// =&gt; 'abc'

padStart 在开始处填充字符


_.padStart([string=''], [length=0], [chars=' '])

如果原字符串长度短于给定的长度,则原字符串左边会填充指定字符(默认为空格),如果填充字符超出长度则会被截断


_.padStart('abc', 6);
// =&gt; ' abc' _.padStart('abc', 6, '_-');
// =&gt; '_-_abc' _.padStart('abc', 3);
// =&gt; 'abc'

parseInt 解析字符串为数字


parseInt(string, radix);

string
要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略。
radix
一个介于2和36之间的整数(数学系统的基础),表示上述字符串的基数。比如参数"10"表示使用我们通常使用的十进制数值系统。始终指定此参数可以消除阅读该代码时的困惑并且保证转换结果可预测。当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10。

返回值: 返回解析后的整数值。 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN
radix参数为n 将会把第一个参数看作是一个数的n进制表示,而返回的值则是十进制的。例如:


_.parseInt('123', 5) // 将'123'看作5进制数,返回十进制数38 =&gt; 1*5^2 + 2*5^1 + 3*5^0 = 38

实现原理es5 parseInt

repeat 重复指定字符串


_.repeat([string=''], [n=1])

重复string字符串n次, 默认1次


_.repeat('*', 3);
// =&gt; '***' _.repeat('abc', 2);
// =&gt; 'abcabc' _.repeat('abc', 0);
// =&gt; ''

replace 替换字符串


_.replace([string=''], pattern, replacement)

同es5 string.prototype.replace


_.replace('Hi Fred', 'Fred', 'Barney');
// =&gt; 'Hi Barney'
console.log(_.replace('Hi Fred', 'Fred', () =&gt; 'ddddd'))
// Hi ddddd

split 分割为数组


_.split([string=''], separator, [limit])

同string.prototype.split, 比es5多了第三个参数。
如果第三个参数小于数组长度,则返回对应参数长度数组,如:


_.split('a-b-c', '-', 1)
// ['a']

大于数组长度,返回原本分割的数组


_.split('a-b-c', '-', 5)
// ['a', 'b', 'c']

startsWith 判断是否是某个字符开头

MDN: string.prototype.startsWith

来源:https://segmentfault.com/a/1190000017540521

超火js库: Lodash API例子的更多相关文章

  1. 一个JS库Lodash

    中文文档:https://www.html.cn/doc/lodash/#_aftern-func

  2. arcgis api for js之echarts开源js库实现地图统计图分析

    前面写过一篇关于arcgis api for js实现地图统计图的,具体见:http://www.cnblogs.com/giserhome/p/6727593.html 那是基于dojo组件来实现图 ...

  3. arcgis api 3.x for js 之 echarts 开源 js 库实现地图统计图分析(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  4. 精读《12 个评估 JS 库你需要关心的事》

    1 引言 作者给出了从 12 个角度全面分析 JS 库的可用性,分别是: 特性. 稳定性. 性能. 包生态. 社区. 学习曲线. 文档. 工具. 发展历史. 团队. 兼容性. 趋势. 下面总结一下作者 ...

  5. 对js库的调研研究------引用

    1. 引言 从以下几个方面来阐述这个问题: 特性. 稳定性. 性能. 包生态. 社区. 学习曲线. 文档. 工具. 发展历史. 团队. 兼容性. 趋势. 2.概述 & 精读 特性 当你调研一个 ...

  6. 一些JS库汇总

    作者:wlove 链接:https://www.zhihu.com/question/429436558/answer/2348777302 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...

  7. 【转载】写一个js库需要怎样的知识储备和技术程度?

    作者:小爝链接:https://www.zhihu.com/question/30274750/answer/118846177来源:知乎著作权归作者所有,转载请联系作者获得授权. 1,如何编写健壮的 ...

  8. 为新项目添彩的 10+ 超有用 JavaScript 库

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  9. 解决jQuery多个版本,与其他js库冲突方法

    jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...

随机推荐

  1. Konig定理及证明

    Konig定理 由匈牙利数学家柯尼希(D.Konig)于1913年首先陈述的定理. 定理的内容:在0-1矩阵中,1的最大独立集合最小覆盖包含的元素个数相同,等价地,二分图中的最大匹配数等于这个图中的最 ...

  2. jiba中文分词原理

    中文分词就是将一个汉字序列分成一个一个单独的词. 现有的分词算法有三大类: 基于字符串匹配的分词:机械分词方法,它是按照一定的策略将待分析的字符串与一个充分大的机器词典中的词条进行匹配,若在词典中找到 ...

  3. Android开发 Camera2开发_1_拍照功能开发

    介绍 google已经在Android5.1之后取消了对Camera1的更新,转而提供了功能更加强大的Camera2.虽然新版本依然可以使用Camera1但是,不管是各种机型适配还是拍照参数自定义都是 ...

  4. Istio流量管理实践之(3): 基于Istio实现流量对比分析

    流量镜像 流量镜像,也称为影子流量,流量镜像提供一种尽可能低的风险为生产带来变化的强大功能.镜像会将实时流量的副本发送到镜像服务.镜像流量发生在主服务的关键请求路径之外. 在非生产或者测试环境中,尝试 ...

  5. Hdu 2376

    题目链接 题意:给出一颗含有n个结点的树,树上每条边都有一个长度,求树上所有路径的平均长度. 考虑树上每条边对所有路径长度和的贡献,对于每条偶 就是边的两个短点u和v,只需要记录以u为根的子树的结点的 ...

  6. tinyproxy 反向代理无法上网原因

      今天参照网上教程在服务器安装并配置了tinyproxy反向代理,此次安装反向代理的目的主要是通过内网连接上服务器,再使用服务器作为中转站进行上网.安装并启动的主要步骤如下 下载并安装tinypro ...

  7. 转载 Python 安装setuptools和pip工具操作方法(必看)

    本文章转载自 脚本之家 http://www.jb51.net  感谢! setuptools模块和pip模块是python进行第三方库扩展的极重要工具,例如我们在需要安装一些爬虫或者数据分析的包时就 ...

  8. Linq之Sum用法新体会

    1.简单应用,求数组的和,示例: , , , , , , , , , }; double numSum = numbers.Sum(); Console.WriteLine("The sum ...

  9. 2019-10-23-C#-从零开始写-SharpDx-应用-绘制基础图形

    title author date CreateTime categories C# 从零开始写 SharpDx 应用 绘制基础图形 lindexi 2019-10-23 21:16:35 +0800 ...

  10. Power Strings POJ2406 KMP 求最小循环节

    相比一般KMP,构建next数组需要多循环一次,因为next[j]代表前j-1个字符的最长相同前缀后缀,比如字符串为aab aab aab共9个字符,则next[10]等于前9个字符中最长相同前缀后缀 ...