函数式编程 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)


浙公网安备 33010602011771号