当前位置:首页 > 日记 > 正文

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

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

如果你读过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

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

相关文章

PHP中类的自动加载的方法

PHP中类的自动加载的方法

方法,自动加载,电脑软件,PHP,类的自动加载是指,在外面的页面中,并不需要去“引入”类文件,但是程序会在需要的时候动态加载需要的类文件。方法1:使用__autoload魔术函数当程序需要某个类时,就会去调用该函数,该函数我们需要自己去定义并在其中写…

CDR怎么调出颜色调色板? CDR调色板

CDR怎么调出颜色调色板? CDR调色板

调色板,使用方法,颜色,电脑软件,CDR,cdr文件打开以后找不到调色板,但是我们又需要选用不同的颜色模式,比如用于印刷的需要CMYK,网页浏览的适合RGB,下面我们就来看看详细的教程。软件名称:CorelDRAW X8 64位 简体中文安装免费版(附序列号)软件大…

word2010使用拼音指南的两种方法wo

word2010使用拼音指南的两种方法wo

方法,拼音,指南,两种,电脑软件,  在word中实现汉字拼音有很多种方法,这里用最简单的Word自带的&ldquo;拼音指南&rdquo;功能为汉字加注拼音。那么下面就由小编给大家分享下word2010使用拼音指南的技巧,希望能帮助到您。word2010使用拼音指南…

PS怎么做一个蓝色的网页翻页按钮?

PS怎么做一个蓝色的网页翻页按钮?

网页,做一个,翻页,按钮,蓝色,PS怎么做一个蓝色的翻页按钮?网页中的按钮是很常见的,想要绘制一个翻页按钮,操作时要注意不规则形状的大小,渐变色的设置以及按钮阴影的创建,下面我们就来看看详细的绘制方法。软件名称:Adobe Photoshop 8.0 中文完整…

PPT如何使用看不见的表格实现栅格

PPT如何使用看不见的表格实现栅格

栅格,表格,如何使用,电脑软件,PPT,  大多数人看到这种PPT的反应应该是&ldquo;天哪!表格居然还能这样用!&rdquo;不用太吃惊,其实这一招在平面设计中早有运用,只不过它有另外一个名字,叫做&ldquo;栅格化排版&rdquo;。以下是小编为您带来的关于…

react-redux中connect | 方法详细

react-redux中connect | 方法详细

方法,详细,电脑软件,react,redux,组件React-Redux将所有组件分为两大类:展示组件(UI组件),容器组件展示组件有以下几个特征:只负责 UI 的呈现,不带有任何业务逻辑 没有状态(即不使用this.state这个变量) 所有数据都由参数(this.props)提供 不使用…

微信小程序-getUserInfo回调的实例

微信小程序-getUserInfo回调的实例

回调,详解,实例,程序,电脑软件,微信小程序-getUserInfo回调的实例详解前言:这里就不吹嘘微信小程序有多厉害了,毕竟也不是我写的,直接谈谈我在做小程序开发时遇到的奇异Bug。getUserInfo多次调用:对于wx.getUserInfo应该很多开发者都用过,用于获…

不等于符号怎么打

不等于符号怎么打

不等于,符号,电脑软件,不等于符号又称不等于号,它表示两个数或量不相等关系的符号。不等号是在等号&ldquo;=&rdquo;上面加上一条斜杠&ldquo;&ne;&rdquo;。现在常用关系类符号有,等号&ldquo;=&rdquo;、不等于号&ldquo;&ne;&rdquo;、大于号&ldq…

使用bootstrap-paginator.js 分页

使用bootstrap-paginator.js 分页

分页,请求,异步,示例,电脑软件,使用bootstrap-paginator.js 分页来进行ajax 异步分页请求具体的做法如下 :首先定义一个异步提交请求的ajax 函数,其完整的函数如下:var nid= $("#lbnid").val(); // 获取当前新闻编号 var cpage = 1; // 当前…

如何防止Excel单元格区域内重复录

如何防止Excel单元格区域内重复录

数据,区域内,单元格,如何防止,电脑软件,今天给大家发布一个有关防止重复录入数据的数据有效性技巧。场景:适合公司人事、行政、财务、销售等进行Excel表格模板定制的办公人士。问题:如何防止Excel单元格区域内重复录入数据?解答:利用Excel的数…

PHP自定义函数实现数组比较功能示

PHP自定义函数实现数组比较功能示

自定义函数,数组,示例,功能,电脑软件,本文实例讲述了PHP自定义函数实现数组比较功能。分享给大家供大家参考,具体如下:<?php //数组使用标准比较运算符这样比较的 function standard_array_compare($op1,$op2) { if(count($op1) < count($op2…

word如何设置表格数字水平居中word

word如何设置表格数字水平居中word

数字,设置,步骤,表格,如何设置,  word表格中的文字或者是数字有时总是靠下有时总是靠上,那么怎样把它水平居中呢,那么下面就由小编给大家分享下word设置表格数字水平居中的技巧,希望能帮助到您。word设置表格数字水平居中的步骤步骤一:首先打…