Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。
Lodash 的模块化方法 非常适用于:
遍历 array、object 和 string
对值进行操作和检测
创建符合功能的函数
npm i -g npm
npm i --save lodash
var _ = require('lodash');
(boolean): 如果所有元素检查后都都返回真值,那么就返回true,否则返回 false 。
注意: 这个方法对于对于空集合返回 true,因为空集合的任何元素都是true。
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.every(users, { 'user': 'barney', 'active': false });
// => false
_.every(users, ['active', false]);
// => true
_.every(users, 'active');
// => false
(boolean): 如果任意元素经检查都为真值,返回 true ,否则返回 false 。
_.some([null, 0, 'yes', false], Boolean);
// => true
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false }
];
_.some(users, { 'user': 'barney', 'active': false });
// => false
_.some(users, ['active', false]);
// => true
_.some(users, 'active');
// => true
(Array): 返回一个新的过滤后的数组。
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.filter(users, function(o) { return !o.active; });
// => objects for ['fred']
_.filter(users, { 'age': 36, 'active': true });
// => objects for ['barney']
_.filter(users, ['active', false]);
// => objects for ['fred']
_.filter(users, 'active');
// => objects for ['barney']
(*): 返回匹配元素,否则返回 undefined。
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.find(users, function(o) { return o.age < 40; });
// => object for 'barney'
_.find(users, { 'age': 1, 'active': true });
// => object for 'pebbles'
_.find(users, ['active', false]);
// => object for 'fred'
_.find(users, ['active', false],1);
// => object for 'fred'
_.find(users, 'active');
// => object for 'barney'
(boolean): 如果找到 value 返回 true, 否则返回 false。
_.includes([1, 2, 3], 1);
// => true
_.includes([1, 2, 3], 1, 2);
// => false
_.includes({ 'user': 'fred', 'age': 40 }, 'fred');
// => true
_.includes('pebbles', 'eb');
// => true
(number): 返回集合的长度。
_.size([1, 2, 3]);
// => 3
_.size({ 'a': 1, 'b': 2 });
// => 2
_.size('pebbles');
// => 7
分组输出添加自己的键。创建一个对象,key 是遍历(集合) 中的每个元素返回的结果。 分组值的顺序是由他们出现在 (集合) 中的顺序确定的。每个键对应的值负责生成 key 的元素组成的数组。
(Object): 返回一个组成聚合的对象。
var stu = [
{ name: '张三', score: 60 },
{ name: '李四', score: 40 },
{ name: '王二', score: 80 },
{ name: '王二', score: 90 }
];
var group = _.groupBy(stu, 'name');
//{ '张三': [{ name: '张三', score: 60 }],'李四':[{ name: '李四', score: 40 }],
// '王二':[ { name: '王二', score: 80 },{ name: '王二', score: 90 }] }
_.groupBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': [4.2], '6': [6.1, 6.3] }
_.groupBy(['one', 'two', 'three'], 'length');
// => { '3': ['one', 'two'], '5': ['three'] }
(Object): 返回 object.
var object = {
'a': [{ 'b': 2 }, { 'd': 4 }]
};
var other = {
'a': [{ 'c': 3 }, { 'e': 5 }]
};
_.merge(object, other);
// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
根据所选对象创建一个新对象。
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
(Array): 返回一个的新一维数组。
_.flattenDeep([1, [2, [3, [4]], 5]]);
// => [1, 2, 3, 4, 5]
第一个数组中的值作为(属性名),第二个数组中的值作为相应的(属性)。
(Object):返回一个新对象。
_.zipObject(['a', 'b'], [1, 2]);
// => { 'a': 1, 'b': 2 }
执行深比较来确定两者的值是否相等。
(boolean): 如果 两个值完全相同,那么返回 true,否则返回 false。
var object = { 'a': 1 };
var other = { 'a': 1 };
_.isEqual(object, other);
// => true
object === other;
// => false
检验value是否为空。
(boolean): 如果 value 为空,那么返回 true,否则返回 false。
_.isEmpty(null);
// => true
_.isEmpty(true);
// => true
_.isEmpty(1);
// => true
_.isEmpty([1, 2, 3]);
// => false
_.isEmpty({ 'a': 1 });
// => false
使用 value 值来(替换)array,从start位置开始, 到end位置结束(但不包含end位置)。
注意: 这个方法会改变 array(注:不是创建新数组)。
(Array): 返回 array。
var array = [1, 2, 3];
_.fill(array, 'a');
console.log(array);
// => ['a', 'a', 'a']
_.fill(Array(3), 2);
// => [2, 2, 2]
_.fill([4, 6, 8, 10], '*', 1, 3);
// => [4, '*', '*', 10]
创建一个lodash包装实例,包装value以启用显式链模式。要解除链必须使用 _.value 方法。
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _
.chain(users)
.sortBy('age')
.map(function(o) {
return o.user + ' is ' + o.age;
})
.head()
.value();
// => 'pebbles is 1'