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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数式编程是一种编程范式,它强调使用纯函数来构建程序,避免可变状态和副作用。Java从8版本开始引入了一些函数式编程的相关API,其中包括以下几个方面: 1. Lambda表达式:Lambda表达式是Java函数式编程的核心特性之一。它允许我们以更简洁的语法编写匿名函数,这样可以更方便地传递函数作为参数、以及在方法内部定义函数。 2. Stream API:Stream API提供了一种基于流的编程模型,可以对集合数据进行功能组合、过滤、映射等操作。Stream API支持链式调用,使得代码更简洁、易读。例如,我们可以通过`filter`方法来过滤符合条件的元素,通过`map`方法进行元素映射,以及通过`reduce`方法对集合进行聚合操作。 3. Optional类:Optional类是Java 8中引入的,用于解决空指针异常的问题。它封装了一个可能为空的值,提供了一系列的方法来处理空值情况,例如`ifPresent`方法用于判断是否存在值,`orElse`方法用于获取默认值等。 4. 函数接口:函数接口是一种只有一个抽象方法的接口,可以通过Lambda表达式来实现。Java 8提供了一些内置的函数接口,如`Consumer`、`Supplier`、`Predicate`等,用于在函数式编程中作为参数或返回值使用。 总结而言,Java在8版本开始引入了一些函数式编程的相关API,包括Lambda表达式、Stream API、Optional类和函数接口等。这些API的引入使得Java语言在函数式编程方面具备了更多的便利性和灵活性,可以更高效地处理集合数据和复杂的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值