zoukankan      html  css  js  c++  java
  • map和reduce函数的使用

    map和reduce函数是定义在Array中的两个方法,可用于提高处理数组的性能和简化代码。

    关于它们的概念,参考Google这篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”。

    map

    map函数是一个高阶函数,它会调用传入的函数来隐式的处理Array中的每一个元素,因此当我们确定好需要对数组中的每个元素进行的操作时,可先定义好处理的方法,

    然后在通过map函数将定义好的函数作为参数传进去,这样浏览器就会自己使用传入的函数来处理数组中的每一个元素并返回处理结束后的新数组。

    示例代码如下:

    function pow(x) {  //简单的平方函数
        return x * x;
    }
    
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    arr.map(pow); // 返回新数组[1, 4, 9, 16, 25, 36, 49, 64, 81] 

    map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把Array的所有数字转为字符串:

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']

    reduce

    Arrayreduce()把一个函数作用在这个Array[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,其效果就是:

    [x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

    比如我们做一个简单的累加器:

    var arr = [1,2,3,4,5,6];
    var sum = arr.reduce(function add(x,y){
        return x+y;
    });

    甚至于我们如果想把一个整数型的数组变成一个整数,也可以这样处理:

    var arr = [1, 3, 5, 7, 9];
    arr.reduce(function (x, y) {
        return x * 10 + y;
    }); // 13579
  • 相关阅读:
    python 去重
    怎样稳稳获得年化高收益
    module_loader.py
    mac上安装ta-lib
    mac上安装memcache
    创建widget
    smartsvn 用法
    用nifi executescript 生成3小时间隔字符串
    TclError: no display name and no $DISPLAY environment variable
    【C#】详解C#序列化
  • 原文地址:https://www.cnblogs.com/pfr-blog/p/6808884.html
Copyright © 2011-2022 走看看