arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值。

reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用callback的第一个参数,不传默认数组的第一个元素):

callback回调函数里又接受四个参数分别是:

previousValue(上一次调用回调函数返回的值,或者是提供的初始值(initValue))

currentValue(数组中当前被处理的元素)

index(当前元素在数组中的索引)

array(调用reduce的数组)

简单应用:

1.求和

var total=[0,1,2,3].reduce((acc,cur)=>acc+cur,0)
//total 6

2.将二维数组转化为一维

var arr1=[
[0,1],
[2,3],
[4,5],
].reduce((acc,cur)=>acc.concat(cur),[])
//arr1 [0,1,2,3,4,5]

3.计算数组中每个元素出现的次数

var names=['Alice','Bob','Tiff','Bruce','Alice'];
var count=names.reduce(function(allNames,name){
console.log(allNames)
if(name in allNames){
allNames[name]++;
}else{
allNames[name]=1;
}
return allNames;
},{})
//count is {Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}

4.数组去重

var arr=[1,2,1,2,3,5,4,5,3,4,4,1,6];
let result=arr.sort().reduce((init,current)=>{
if(init.length===0 || init[init.length-1]!==current){
init.push(current);
}
return init;
},[]);
//result is [1,2,3,4,5,6]

功能强大的js数组方法:reduce的更多相关文章

  1. 几个关于js数组方法reduce的经典片段

    以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...

  2. 转载收藏(js数组方法大全)

    js数组方法大全 JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Arra ...

  3. js数组方法详解

    Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...

  4. js数组方法大全(上)

    # js数组方法大全(上) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 join() reverse() sort() concat() slice( ...

  5. js数组方法大全(下)

    # js数组方法大全(下) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 forEach() map() filer() every() some() ...

  6. js 数组方法比较

    js 数组方法比较 table th:first-of-type { width: 80px; } table th:nth-of-type(2) { width: 120px; } table th ...

  7. js数组方法大全

    JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Array(20); // ...

  8. js数组方法详解(最新最全)

    数组是js中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响.本文所有的栗子都是在es7环境下测试的,如果有问题欢迎留言交流 ...

  9. js数组方法解析

    js 数组有很多方法,其中有的常用,有的不常用,归纳几个常用的方法,做个总结: 1. 转换方法: 1.1 valueOf():调用这个方法会返回数组本身 <script> var arr ...

随机推荐

  1. DVWA中low级的sql注入漏洞的简单复现

    第一次成功复现一个简单漏洞,于是写下这篇随笔记录一下 首先我们来看dvwa中low级的sql注入的源码 源码文件路径如下图: 源码如下: <?php if(isset($_GET['Submit ...

  2. Exp2 后门原理与实践 20165110

    Exp2 后门原理与实践 一.实验要求 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shell, 任务计划启动 3.使用MSF meterpreter(或其 ...

  3. 47 【golang】mysql操作

    新做了个demo,可以简单了解下mysql的操作:https://github.com/helww/mylab/tree/master/go/mysql

  4. 关于servelt的相关介绍

    1.@WebServlet注解的作用 在Servlet 3.0中,使用@WebServlet注解可实现servlet和url的映射,它告知容器哪些Servlet会提供服务以及额外信息,其作用相当于之前 ...

  5. go安装依赖包

    实例 比如先切换到 $GOPATH 的 src 目录,cd $GOPATH/src,然后按需要下载: git clone --depth 1 https://github.com/golang/too ...

  6. eclipse java tomcat 远程调试

    在远程linux上修改tomcat 中bin 文件夹下 修改catalina.sh文件,在最前面加上如下代码: CATALINA_OPTS="-Xdebug -Xrunjdwp:transp ...

  7. import os, glob, fnmatch--Python os/glob/fnmatch主要函数总结

    auther: Lart date: 2019-01-17 update: 2019-01-18 09:55:36 --- import os, glob, fnmatch 针对某些操作, 官方推荐这 ...

  8. View操作 swift

    //创建View let view1 =UIView() let view2 =UIView(frame: CGRectMake(,, ,)) let view3 =UIView(frame: CGR ...

  9. 面试简单整理之IO

    1.字节流,字符流 整个Java IO体系都是基于字节流(InputStream/OutputStream) 和 字符流(Reader/Writer)作为基类,根据不同的数据载体或功能派生出来的. 2 ...

  10. Hishop数据库根据产品ProductID取产品规格

    #region 产品规格 public static string GetSku(int ProductId) { DataTable skus =GetSkus(ProductId); // Res ...