<<模块lodash的作用>>
Lodash是一个内部封装了诸多对字符串、数组、对象等常见的数据类型的处理函数的一套工具库
Lodash提供的辅助函数主要分为以下几类
---Array,适用于数组类型,比如填充数据、查找元素、数组分片等操作
---Collection,适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作
---Function,适用于函数类型,比如节流、延迟、缓存、设置钩子等操作
---Lang,普遍适用于各种类型,常用于执行类型判断和类型转换
---Math,适用于数值类型,常用于执行数学计算
---Number,适用于生成随机数,比较数值与数值区间的关系
---Object,适用于对象类型,常用于对象的创建、扩展、类型转换、检索、集合等操作
---Seq,常用于创建链式调用,提高执行性能
---String,适用于字符串类型
lodash主要使用了延迟计算,使得其性能大大提升,延迟计算意味着在我们的链式方法在显示或者隐藏式的value()调用之前式不会执行的。由于这种执行的延后,因此lodash可以进行shortcut fusion这样的优化,通过合并链式iteratee大大降低迭代次数。从而大大提升性能
//什么是shortcut fusion??
例如
var users = [
{'username': 'barry', 'age': 15},
{'username': 'fred', 'age': 18},
{'username': 'jason', 'age': 20}
];
//获取所有用户的名字,并且用','来分割开来
var names = _.chain(users)
.map(function(user){
return user.username;
})
.join(',')
.value();
console.log(names);
这里只是一串方法链,如果没有显式的调用value方法,使其立即执行的话,将会得到LodashWrapper的延迟表达式,如下
LodashWrapper {__wrapped__: LazyWrapper, __actions__: Array[1], __chain__: true, constructor: function, after: function…}
因为延迟表达式的存在,我们可以多次增加方法链,但是并不会执行,所以不会存在性能上的问题,当我们最后需要使用的时候,使用value显示立即执行即可。
网友评论