Array的 map() 和 reduce()
map()
map() 方法返回一个新数组,新数组中的元素为原始数组中的元素依次调用参数中的函数处理后的值。
map() 方法不会对空数组进行检测,也不会修改原数组。
语法:
array.map(function (currentValue, index, arr), thisValue)
参数说明:

注意:
在使用它的时候要特别注意参数函数中的参数,如果参数与(currentValue, index, arr)有冲突,可以考虑对参数函数做些修改后再传入。例如下面这个示例:
// 我们想使用下面的代码把arr中的字符串全都转换为整数 var arr = ['1', '2', '3', '4'];
console.log(arr.map(parseInt)); // 但输出结果却为:[ 1, NaN, NaN, NaN ]
这是因为parseInt()接受两个参数string,和radix,所以parseInt会把map()传的index参数当作radix,而redix为将字符串要解析成的进制数,以此就可以分析出为什么会出现NAN了。
// 我们可以使用装饰器的思想对parseInt做如下修改
var arr = ['1', '2', '3', '4'];
var oldParseInt = parseInt;
parseInt = function(x) {
return oldParseInt(x, 10);
}
console.log(arr.map(parseInt)); // 输出结果为:[ 1, 2, 3, 4 ]
reduce()
reduce() 方法接受一个函数作为累加器,数组中的值从左到右开始计算,最终返回计算出来的一个值。reduce() 对于空数组不会执行回调。当数组中只有一个元素时无论参数函数是什么,reduce都返回数组中的唯一元素。
可以这样理解reduce:
[x1, x2, x3, x4].reduce(f) --> f(f(f(x1, x2), x3), x4)
语法:
array.reduce(function(total, currentVal, currentIndex, arr), inintialValue);
参数说明:

示例:
var arr = [1];
var f = function(x, y) {
return x + 10;
}
console.log(arr.reduce(f)); //输出整数1
var arr = [1, 2, 3, 4];
var f = function(x, y) {
return x*10 + y;
}
console.log(arr.reduce(f)); //输出整数1234
Array的 map() 和 reduce()的更多相关文章
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
ES5中,一共有9个Array方法 Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.pr ...
- 【hadoop】如何向map和reduce脚本传递参数,加载文件和目录
本文主要讲解三个问题: 1 使用Java编写MapReduce程序时,如何向map.reduce函数传递参数. 2 使用Streaming编写MapReduce程序(C/C++ ...
- Spark RDD API详解(一) Map和Reduce
RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看,RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不同 ...
- 廖雪峰教程笔记:js中map和reduce的用法
举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下: 由于map()方法定义在JavaScript的 ...
- Spark RDD API具体解释(一) Map和Reduce
本文由cmd markdown编辑.原始链接:https://www.zybuluo.com/jewes/note/35032 RDD是什么? RDD是Spark中的抽象数据结构类型,不论什么数据在S ...
- 在JavaScript函数式编程里使用Map和Reduce方法
所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工 ...
- JavaScript学习笔记(十)——高阶函数之map,reduce,filter,sort
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- hive语句嵌入python脚本(进行map和reduce,实现左外连接)
在Hive语句中使用脚本(如python和shell)进行map和reduce:利用命令transform(或者指定map和reduce),配合加入的脚本文件add file 请看:http://ww ...
- js高阶函数map和reduce
map 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下: 由于map()方法定义在JavaScr ...
随机推荐
- [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)
星期日, 09. 九月 2018 07:51下午 - beautifulzzzz 1.安装步骤 1) 从GNU Arm Embedded Toolchain官网下载最新的gcc-arm工具链,写文章时 ...
- NeuChar 平台使用及开发教程(五):使用 NeuChar 的关键字回复服务
在上一篇<NeuChar 平台使用及开发教程(四):使用 NeuChar 的素材服务>中,我们已经完成了素材的添加,下面,让我们来设置一个关键字回复,并同步到应设置好Neural Endi ...
- SQL基本注入演示
作者:ZERO 所属团队:Arctic Shell 参考文献:<sql注入攻击与防御> 使用平台:pikachu漏洞练习平台 导语: 在owasp发布的top10排行榜中注入漏洞一直是危 ...
- 多媒体文件格式(三):M3U8 格式
一.M3U8 格式标准介绍 M3U8文件是指UTF-8编码格式的M3U文件.M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播 ...
- Oracle客户端、服务的安装及干净卸载Oracle
软件下载地址: 链接:https://pan.baidu.com/s/1Sluf890eNuaV8muL55eO2w 提取码:oez7 服务端因文件过大,所以分了两个文件压缩包,下载后将内容解压后放置 ...
- RabbitMQ 学习笔记
环境: MacOS 10.14 Node.js 8.9.1 零.背景 目前有个上线应用会接受多个请求,且每个请求的处理时间可能很久,可能到数小时,所以就想采用异步机制,至于复杂的运算就用消息队列(MQ ...
- Kubernetes 笔记 07 豌豆荚之旅(二)
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...
- MySQL将utf8字符集改为utf8mb4
前言 今天在查看tomcat日志时发现了一个错误:Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0 ...
- npm私有仓库 配置verdaccio在docker环境
前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...
- Nginx学习系列四默认负载均衡轮询及Ip_hash等常用指令介绍
一.简介 Upstream模块是Nginx中一个核心模块,当客户端访问Nginx服务器的时候,Nginx会从服务器列表中选取压力小的服务器,然后分配给客户端进行访问.这个过程,Nginx通过轮询算法轮 ...