reduce方法接收一个函数作为累加器,数组中的每个值(从左至右)开始缩减,最终计算为一个值

注意:reduce()对于空数组是不会执行回调函数

语法:

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

       var arr=[0,1,2,3,4]
var sum = arr.reduce(function(total,currentVal,index,arr){
return total + currentVal //等同于 total = total + currentVal
},5);
console.log(sum) //15

initVal为函数的初始值

当不传该值的时候,

       var arr=[0,1,2,3,4]
var sum = arr.reduce(function(total,currentVal,index,arr){
return total = total + currentVal;
});
console.log(sum) //10

内部执行顺序为

index的值是从1开始的,total的初始值为index=0的value,而后再循环累加

在函数的参数里面,total的描述为,初始值,或是计算结束后端的返回值,咦,难道total作为初始值使用的时候和initVal的结果是一样的;

       var arr=[0,1,2,3,4]
var sum = arr.reduce(function(total,currentVal,index,arr){
total = 5;
return total = total + currentVal;
});
console.log(sum) //

我且先给total一个初始值,按照理想的应该输出的是14,可是结果输出的是9;

看运行过程

total的值一直为5,原来每一次运行都要重新赋值一遍total,所以结果是每次的固定total值与当前的currentVal相加,所以最后得到的值为9

所以,目前写下来,觉得total作为初始值处理的意义不大,如果要想给初始值还是initVal用起来方便。

若数组为空数组;

       var arr=[]
var sum = arr.reduce(function(total,currentVal,index,arr){
console.log(total,currentVal,index,arr)//不会输出
return 'a' //不会返回
},1);
console.log(sum) //1 有初始值的情况下,返回初始值,没有初始值直接报错

当数组有空项的时候,直接跳过

       var arr=[0,1,,,4]
var sum = arr.reduce(function(total,currentVal,index,arr){
console.log(total,currentVal,index,arr)
return total=total+currentVal
});
console.log(sum) //

  

Javascript reduce方法的更多相关文章

  1. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  2. JavaScript reduce() 方法

    转载:http://www.runoob.com/jsref/jsref-reduce.html  JavaScript Array 对象 实例 计算数组元素相加后的总和: var numbers = ...

  3. JavaScript中reduce()方法

    原文  http://aotu.io/notes/2016/04/15/2016-04-14-js-reduce/   JavaScript中reduce()方法不完全指南 reduce() 方法接收 ...

  4. 在JavaScript函数式编程里使用Map和Reduce方法

    所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工 ...

  5. reduce 方法 (Array) (JavaScript)

    对数组中的所有元素调用指定的回调函数.该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供. 语法         array1.reduce(callbackfn[, in ...

  6. JavaScript数组方法reduce解析

    Array.prototype.reduce() 概述 reduce()方法是数组的一个实例方法(共有方法),可以被数组的实例对象调用.reduce() 方法接收一个函数作为累加器(accumulat ...

  7. JavaScript数组的reduce方法详解

    数组经常用到的方法有push.join.indexOf.slice等等,但是有一个经常被我们忽略的方法:reduce,这个方法简直强大的不要不要的. 我们先来看看这个方法的官方概述:reduce()  ...

  8. javascript reduce map函数方法

    retduce: 对数组中的所有元素调用指定的回调函数.该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供. 语法     array1.reduce(callbackfn ...

  9. javascript之reduce()方法的使用

    以前看到reduce方法,总是看得我头皮发麻,今天无意间又遇到他了,于是学习了下,接触之后,觉得这个方法还挺好用的,在很多地方都可以派上用场,比如,数组中元素求和.数组去重.求数组中的最大值或最小值等 ...

随机推荐

  1. android studio 开发免安装的app之目录结构

    尚未深入分析,暂且外链到我看到的,对此有帮助的博客,在此,感谢你们. 1.https://blog.csdn.net/tscyds/article/details/74331085 2.https:/ ...

  2. session的创建和销毁时间

    什么时候创建session ? 在你的服务器端发现没有该客户端的session,那么创建 什么时候销毁? 1.关闭客户端的时候 2.手动销毁 3.过期

  3. 【Java并发编程二】Java并发包

    1.Java容器 1.1.同步容器 Vector ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时 ...

  4. Java - Multithreading zz

    Java is a multi-threaded programming language which means we can develop multi-threaded program usin ...

  5. 学习随笔:Django 补充及常见Web攻击 和 ueditor

    判断用户是否登录 <!-- xxx.html --> {% if request.user.is_authenticated %} django中的request对象详解 填错表格返回上次 ...

  6. 【C语言编程练习】5.9 爱因斯坦的阶梯问题

    1. 题目要求 有一个长阶梯,每2步上,最后剩1个台阶,若每3步上,最后剩2个台阶.若每5步上,最后剩4个台阶,若每6步上,最后剩5个台阶.只有每步上7阶,才可以刚好走完,请问台阶至少有多少阶? 2. ...

  7. BZOJ1991 : Pku2422 The Wolves and the Sheep

    将每个不是障碍的格子标号,设三只狼的位置分别为$A,B,C$,羊的位置在$D$.合法状态中强行限制$A<B<C$,这样状态数只有$\frac{n^8}{6}\approx 1.6\time ...

  8. CSS _text-align:justify;实现两端对齐

    参考:https://segmentfault.com/q/1010000007136263 法一:text-align-last:justify: html <div> <p cl ...

  9. 微信小程序----没有 DOM 对象,一切基于组件化 ---- mpvue

    封装好用的 类库 和 组件,复用且灵活度高 抽取相同的部分放在函数内部(组件内部) 抽取不同的部分放在形参(组件 props 传参,或者插槽) new Promise 运行时 初始化实例对象的状态为 ...

  10. curl命令行请求

    curl -H "Content-Type: application/json" -X POST --data 'json post数据' -i http://xxx