函数式编程 lodash 常用api
1、forEach
_.forEach({
'a': 1,
'b': 2
}, function(value, key) {
console.log(key);
});
_.forEach([3,4], function(value) {
console.log(value);
});
2、filter
var users = [{
'user': 'barney',
'age': 36,
'active': true
},
{
'user': 'fred',
'age': 40,
'active': false
}
];
var usersNew = _.filter(users, function(o) {
return !o.active;
})
console.log(usersNew)
var usersNew2 = _.filter(users, {'active': true })
console.log(usersNew2)
var usersNew3 = _.filter(users, ['active', false])
console.log(usersNew3)
//active 值为true
var usersNew4 = _.filter(users, 'active')
console.log(usersNew4)
3、random
_.random([min=0], [max=1], [floating])
产生一个包括 min
与 max
之间的数。 如果只提供一个参数返回一个0到提供数之间的数。 如果 floating
设为 true,或者 min
或 max
是浮点数,结果返回浮点数。
4、深拷贝_.cloneDeep
5、扩展对象_.assign
6、去掉对象属性_.omit
7、从某个对象中选择部分属性组成新的对象 _.pick
8、排序_.orderBy
var users = [{
'user': 'fred',
'age': 48
},
{
'user': 'barney',
'age': 34
},
{
'user': 'fred',
'age': 42
},
{
'user': 'barney',
'age': 36
}
];
console.log(_.orderBy(users, ['age'], ['desc']))
9 、函数执行N次
_.times(n, [iteratee=_.identity])
调用 iteratee N 次,每次调用返回的结果存入到数组中。 iteratee 会传入1个参数:(index)。
console.log(_.times(3, String))
10、等差数组
console.log(_.range(0, 20, 5))
// [0, 5, 10, 15]
11、isEmpty
检查 value
是否为空。 判断的依据是除非是有枚举属性的对象,length 大于 0
的 arguments
object, array, string 或类jquery选择器。
12.take
_.take(array, [n=1])
从数组的起始元素开始提取 N 个元素。(如可实现分页)
_.take([1, 2, 3]);
// => [1]
_.take([1, 2, 3], 2);
// => [1, 2]
_.take([1, 2, 3], 5);
// => [1, 2, 3]
_.take([1, 2, 3], 0);
// => []
13、
_.reject(collection, [predicate=_.identity])
反向版 _.filter
,这个方法返回 predicate
检查为非真值的元素。
14、_.assign
var a = { a: 1 }, b = { b: 2 }, c = { c: 3 }; var d = {}; var d = _.assign(d, a, b, c); console.log(a) console.log(b) console.log(c) console.log(d)
作者:孟繁贵 Email:meng010387@126.com 期待共同进步!