JavaScript之map reduce_动力节点Java学院整理

 更新时间:2017年06月29日 11:04:36   作者:liaoxuefeng  
这篇文章主要为大家详细介绍了JavaScript之map reduce的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。

map

举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下:

由于map()方法定义在JavaScript的Array中,我们调用Arraymap()方法,传入我们自己的函数,就得到了一个新的Array作为结果:

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()传入的参数是pow,即函数对象本身。
你可能会想,不需要map(),写一个循环,也可以计算出结果:

var f = function (x) {
  return x * x;
};

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = [];
for (var i=0; i<arr.length; i++) {
  result.push(f(arr[i]));
}

的确可以,但是,从上面的循环代码,我们无法一眼看明白“把f(x)作用在Array的每一个元素并把结果生成一个新的Array”。
所以,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

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

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

比方说对一个Array求和,就可以用reduce实现:

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
  return x + y;
}); // 25

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 微信小程序实现简单搜索框

    微信小程序实现简单搜索框

    这篇文章主要为大家详细介绍了微信小程序实现简单搜索框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

    微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

    我们在开发小程序时,如果想获取用户信息,就需要获取用的授权,如果用户误点了拒绝授权,我们怎么样去正确的引导用户重新授权呢。今天就来给大家讲讲如果正确的引导用户授权,需要的朋友可以参考下
    2019-07-07
  • webpack实现静态资源缓存的方法

    webpack实现静态资源缓存的方法

    本文主要介绍了webpack实现静态资源缓存的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • javascript将中国数字格式转换成欧式数字格式的简单实例

    javascript将中国数字格式转换成欧式数字格式的简单实例

    下面小编就为大家带来一篇javascript将中国数字格式转换成欧式数字格式的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • js实现鼠标跟随小游戏

    js实现鼠标跟随小游戏

    这篇文章主要为大家详细介绍了js实现鼠标跟随小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 纯JS前端实现分页代码

    纯JS前端实现分页代码

    这篇文章主要介绍了纯JS前端实现分页代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 微信JSAPI Ticket接口签名详解

    微信JSAPI Ticket接口签名详解

    这篇文章主要为大家详细介绍了微信JSAPI Ticket接口签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • DWR中各种java方法的调用

    DWR中各种java方法的调用

    DWR是一个框架,简单的说就是能够在javascript直接调用java方法,而不必去写一大堆的javascript代码。它的实现是基于ajax的,可以实现无刷新效果。不少DWR的例子,但大都只是某种方法的调用只在使用层面上介绍DWR,并不涉更多的技术与设计javascript中是如何调用的。
    2016-05-05
  • js实现百度登录框鼠标拖拽效果

    js实现百度登录框鼠标拖拽效果

    这篇文章主要为大家详细介绍了js实现百度登录框鼠标拖拽效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • JS+CSS实现仿msn风格选项卡效果代码

    JS+CSS实现仿msn风格选项卡效果代码

    这篇文章主要介绍了JS+CSS实现仿msn风格选项卡效果代码,涉及JavaScript响应鼠标事件动态变换页面元素css样式实现切换功能的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10

最新评论