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

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

你可能感兴趣的:(Map、Reduce、Filter)