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. 一.C#基础:标识符和关键字

    只要语言就会有标识符,和关键字的概念,以下是C#的标识符与关键字: 一个字符串要成为标识符要满足的条件1:只包含字母,(包括大小写),数字,@符号,下划线——.2:首位可以是字母,@,但一定不能是数字 ...

  2. Vue父子组件生命过程

    加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...

  3. 关于webApi 跨域请求

    先说一下我的项目,后台单纯的webApi,前端采用Vue+axios, 说一下我遇见的问题,axios请求webAPI但是浏览器会报错,大致上就是不允许跨域请求. 于是查找解决办法发现以下代码(web ...

  4. 53-java中的queue

    java.util 接口 Queue<E> 类型参数: E - collection 中所保存元素的类型. 所有超级接口: Collection<E>, Iterable< ...

  5. CMD运行JAVA出现编码GBK的不可映射字符处理方法?

    方法一: (将notepad编辑器的编码方式改为ANSI后再进行程序代码的编译,将之前乱码的汉字删除重新输入正常的汉字) 1.notepad编辑器默认编码方式为UTF-8时,CMD里面执行javac ...

  6. 使用Json.net对Json进行遍历

    公司使用了一种伪Json, 当value为字符串并且以"@"开头时, 要替换成真实的值, 比如{"name":"@countryName"} ...

  7. Unable to resolve target 'android-XX' 类似的错误。

    解决办法: 打开项目代码中的Project target,将 复制代码 代码如下: # Project target.   target=android-7 修改为你当前支持的ADK版本即可. 参考: ...

  8. docker--容器和镜像的导入导出及部署

    一.镜像导出 save 1.查看镜像 docker images 2.导出镜像 docker save -o test.tar image_name 或 docker save image_name ...

  9. Windows PowerShell基本语法及常用命令

    PowerShell常用命令: 一 Get类 1.Get-Command : 得到所有PowerShell命令,获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的 ...

  10. 【漫画】程序员永远修不好的Bug——情人节

    盼望着,盼望着,周五来了 情人节的脚步近了 一切都像热恋时的样子 飘飘然放开了买 购物车满起来了…… 不要指望着能在女生面前蒙混过关 是时候展现真正的技术了 这道坎过去了是情人节 过不去就是清明节了 ...