Lodash目前非常流行的JavaScript的工具集合框架,被前端开发者广泛地使用,下面是一些平常开发过程中常用的函数。
在介绍函数前,对lodash函数名应有如下的了解:
- 含sorted的方法接受有序数组
- 同名含By的方法额外接受一个迭代器参数
- 同名含Last的方法返回的是符合筛选条件元素的最后一个
对象扩展:
_.assign
|
|
防抖函数
_.debounce
在触发防抖函数的事件后面加个延迟时间,如果在该延迟时间内没有继续触发事件,那么执行防抖函数。设想一个场景,电梯门打开的时候,如果在2s内陆续有人按电梯按钮,那么每次电梯都会再重新等待2s,直至2s中没人按按钮再触发关门操作。
迭代函数n次
- 返回:每次返回结果构成的数组
- 应用:生成大量测试数据
|
|
查找数组中的特定对象
接收多个对象属性查找
设置及获取对象属性
根据对象路径进行设置或获取
- _set方法:如果路径不存在,会自动创建路径。像下面的例子,使用该方法不会再出现“Cannot set property ‘items’ of undefined” error.”这种错误
- _get方法:如果对象路径不存在,返回undefined而不会报错,第三个参数接收默认值。
|
|
将对象数组重组成对象映射
- 只要服务器返回的是个集合对象,就可以通过该方法将集合转成对象映射
- 第二个参数也可以是函数,函数的第一个参数默认是数组中的一个对象
如从100篇文章中选取出id为34abc的文章,当获取到文章数组后,怎么做?
遍历集合元素并返回特定格式的对象
- 通过 iteratee 遍历集合中的每个元素。 每次返回的值会作为下一次 iteratee 使用。 如果没有提供accumulator(第三个参数,即初始值),则集合中的第一个元素作为 accumulator。
- 常见的错误是忽略了返回结果(return result)和没有传入函数的第三个参数(默认值)
下面的例子从数组筛选符合年龄条件并由年龄进行分组的数据
深拷贝
_.cloneDeep()
浅拷贝
_.clone()
对于对象内部的引用类型不会拷贝,而是指向同一个存在堆中的地址
数组去重
uniq() 与 . sortedUniq()
方法 | 说明 |
---|---|
_.uniq | 数组去重 |
_.sortedUniq | 对于已排序的数组性能更高 |
向有序数组中插入元素,依旧保证有序
返回:插入元素在数组中的索引
方法:都含有sorted表示接受有序数组
- _.sortedIndex
- _.sortedIndexBy
- _.sortedLastIndex
- _.sortedLastIndexBy
含Last方法和不含Last方法的区别是:
Last方法在保持有序的前提下会把value插进最大的那个位置
参考及延伸
Lodash官方文档(4.17.4):https://lodash.com/docs/4.17.4
Lodash中文文档(3.10.1):http://lodashjs.com/docs/
Lodash/fp模块:https://github.com/lodash/lodash/wiki/FP-Guide
什么是Lodash/fp模块:http://www.cnblogs.com/legendlee/p/5601524.html
Webpack按需打包lodash:http://www.tuicool.com/articles/niyeMrN