Javascript reduce方法
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方法的更多相关文章
- JavaScript - reduce方法,reduceRight方法 (Array)
JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...
- JavaScript reduce() 方法
转载:http://www.runoob.com/jsref/jsref-reduce.html JavaScript Array 对象 实例 计算数组元素相加后的总和: var numbers = ...
- JavaScript中reduce()方法
原文 http://aotu.io/notes/2016/04/15/2016-04-14-js-reduce/ JavaScript中reduce()方法不完全指南 reduce() 方法接收 ...
- 在JavaScript函数式编程里使用Map和Reduce方法
所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工 ...
- reduce 方法 (Array) (JavaScript)
对数组中的所有元素调用指定的回调函数.该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供. 语法 array1.reduce(callbackfn[, in ...
- JavaScript数组方法reduce解析
Array.prototype.reduce() 概述 reduce()方法是数组的一个实例方法(共有方法),可以被数组的实例对象调用.reduce() 方法接收一个函数作为累加器(accumulat ...
- JavaScript数组的reduce方法详解
数组经常用到的方法有push.join.indexOf.slice等等,但是有一个经常被我们忽略的方法:reduce,这个方法简直强大的不要不要的. 我们先来看看这个方法的官方概述:reduce() ...
- javascript reduce map函数方法
retduce: 对数组中的所有元素调用指定的回调函数.该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供. 语法 array1.reduce(callbackfn ...
- javascript之reduce()方法的使用
以前看到reduce方法,总是看得我头皮发麻,今天无意间又遇到他了,于是学习了下,接触之后,觉得这个方法还挺好用的,在很多地方都可以派上用场,比如,数组中元素求和.数组去重.求数组中的最大值或最小值等 ...
随机推荐
- android studio 开发免安装的app之目录结构
尚未深入分析,暂且外链到我看到的,对此有帮助的博客,在此,感谢你们. 1.https://blog.csdn.net/tscyds/article/details/74331085 2.https:/ ...
- session的创建和销毁时间
什么时候创建session ? 在你的服务器端发现没有该客户端的session,那么创建 什么时候销毁? 1.关闭客户端的时候 2.手动销毁 3.过期
- 【Java并发编程二】Java并发包
1.Java容器 1.1.同步容器 Vector ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时 ...
- Java - Multithreading zz
Java is a multi-threaded programming language which means we can develop multi-threaded program usin ...
- 学习随笔:Django 补充及常见Web攻击 和 ueditor
判断用户是否登录 <!-- xxx.html --> {% if request.user.is_authenticated %} django中的request对象详解 填错表格返回上次 ...
- 【C语言编程练习】5.9 爱因斯坦的阶梯问题
1. 题目要求 有一个长阶梯,每2步上,最后剩1个台阶,若每3步上,最后剩2个台阶.若每5步上,最后剩4个台阶,若每6步上,最后剩5个台阶.只有每步上7阶,才可以刚好走完,请问台阶至少有多少阶? 2. ...
- BZOJ1991 : Pku2422 The Wolves and the Sheep
将每个不是障碍的格子标号,设三只狼的位置分别为$A,B,C$,羊的位置在$D$.合法状态中强行限制$A<B<C$,这样状态数只有$\frac{n^8}{6}\approx 1.6\time ...
- CSS _text-align:justify;实现两端对齐
参考:https://segmentfault.com/q/1010000007136263 法一:text-align-last:justify: html <div> <p cl ...
- 微信小程序----没有 DOM 对象,一切基于组件化 ---- mpvue
封装好用的 类库 和 组件,复用且灵活度高 抽取相同的部分放在函数内部(组件内部) 抽取不同的部分放在形参(组件 props 传参,或者插槽) new Promise 运行时 初始化实例对象的状态为 ...
- curl命令行请求
curl -H "Content-Type: application/json" -X POST --data 'json post数据' -i http://xxx