函数式编程 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)
原文地址:https://www.cnblogs.com/mengfangui/p/9200515.html