Map、Reduce、Filter

在之前做的JS练习中,着重练习了集合操作,主要用到的就是map、reduce、filter这三个函数。我们看个例子:

求一个序列中所有偶数乘三加一后的和

转换成代码:
collection.filter(n => (n % 2) == 0).map(n => n*3+1).reduce(function(total, x){ return total+x; });

首先我们使用filter将偶数过滤出来,之后将每个偶数乘三加一,再通过reduce累加,问题过程分解如下:

  1. 选出集合中的偶数
    输入:
    inputArray: [Number]
    输出:
    evenArray: [Number]
  1. 将所有偶数乘三加一
    输入:
    evenArray: [Number]
    输出:
    new_evenArray: [Number]
  2. 求和
    输入:
    new_evenArray: [Number]
    输出:
    sum: Number

所以,我们在解决类似问题的时候,先将问题分割,然后使用相关功能的函数(没有只能自己写)计算,先进行过滤,再进行操作、最后迭代。
是不是感觉有点像函数式编程呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容