Lodash

Lodash概述

随着时间的过去,我们写码会积累一些习惯,思想,工具和套路代码,让我们下次在做类似工作时可以事半功倍。lodash就是一个js的工具库,它内部封装了常见的数据处理,如字符,数组,对象,日期。传承于underscore,但性能上却更优异。

模块组成

  • Array,适用于数组类型,比如填充数据、查找元素、数组分片等操作
  • Collection,适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作
  • Date,当前时间戳
  • Function,适用于函数类型,比如字节流,延迟,缓存,设置钩子等操作
  • Lang,类型转化和数值比较
  • Math,数学运算
  • Number,随机数和数值区间
  • Object,对象的创建、扩展、类型转换、检索、集合等操作
  • Seq,创建链式调用,提高执行性能(惰性计算)
  • String,适用于字符串类型

实例

1.N次循环

1
2
3
4
5
6
7
8
9
10
11
// 1. Basic for loop. 
for(var i = 0; i < 5; i++) {
// ...
}
// 2. Using Array's join and split methods
Array.apply(null, Array(5)).forEach(function(){
// ...
});
// Lodash _.times(5, function(){
// ...
});

for 语句是执行循环的不二选择,Array.apply 也可以模拟循环,但在上面代码的使用场景下,_.times() 的解决方式更加简洁和易于理解。

2.深层查找属性值

1
2
3
4
5
6
7
8
9
10
11
12
13
// Fetch the name of the first pet from each owner 
var ownerArr = [{
"owner": "Colin",
"pets": [{"name":"dog1"}, {"name": "dog2"}]
}, {
"owner": "John",
"pets": [{"name":"dog3"}, {"name": "dog4"}] }];
// Array's map method.
ownerArr.map(function(owner){
return owner.pets[0].name;
});
// Lodash
_.map(ownerArr, 'pets[0].name');

_.map 方法是对原生 map 方法的改进,其中使用 pets[0].name 字符串对嵌套数据取值的方式简化了很多冗余的代码,非常类似使用 jQuery 选择 DOM 节点 ul > li > a,对于前端开发者来说有种久违的亲切感。