reduce()作为一个循环使用。接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组。

应用  作为累加器使用

  

var a=[4,5,6,7,8]
//item代表一次回调的值 初始值为0
//cart代表当前元素的值
//index当前下标
//arr原数组
var num=a.reduce((item,cart,index,arr)=>{
return item+=cart
},0)
//初始值为0
console.log(num) //输出为30
  
以上结果回调被调用用5次分别是
name item cart index arr Output
第一次 0 4 0
[4,5,6,7,8]
4
第二次 4 5 1
[4,5,6,7,8]
9
第三次 10 6 2
[4,5,6,7,8]
15
第四次 15 7 3
[4,5,6,7,8]
22
第五次 22 8 4
[4,5,6,7,8]
30
 
还可以利用reduce来计算一个字符串中每个字母出现次数
 
        var str = 'asfadewqqfh';
var obj = str.split('').reduce((item,cart) => {
//三元运算符
item[cart] ? item[cart] ++ : item[cart] = 1
return item
},{})
console.log(obj)//以上结果输出为a: 2 d: 1 e: 1 f: 2 h: 1 q: 2 s: 1 w: 1
  

JS中的reduce()详解的更多相关文章

  1. JS中this关键字详解

    本文主要解释在JS里面this关键字的指向问题(在浏览器环境下). 阅读此文章,还需要心平气和的阅读完,相信一定会有所收获,我也会不定期的发布,分享一些文章,共同学习 首先,必须搞清楚在JS里面,函数 ...

  2. JS 中 this 关键字详解

    本文主要解释在JS里面this关键字的指向问题(在浏览器环境下). 首先,必须搞清楚在JS里面,函数的几种调用方式: 普通函数调用 作为方法来调用 作为构造函数来调用 使用apply/call方法来调 ...

  3. Bom和Dom编程以及js中prototype的详解

    一.Bom编程: 1.事件练习: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  4. JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

      前  言 JRedu 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于 ...

  5. JS中navigator对象详解

    <code class="language-html"><!doctype html> <html> <head> <meta ...

  6. js中Date()对象详解

    var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-???? ...

  7. js中的逻辑运算符详解(||、&&、!)

    视频地址:https://www.bilibili.com/video/BV1Y7411K7zz?p=1 一直以来都没弄清楚js中的逻辑运算符是怎么回事 , 一直都以为他们的用法和java一样 , 今 ...

  8. js中window对象详解以及页面跳转

    1.window.top.window.location = "index.asp"; 2.window.top.location.href="index.asp&quo ...

  9. node.js中express-session配置项详解

    官方地址:https://www.npmjs.com/package/express-session 作用:用指定的参数创建一个session中间件,sesison数据不是保存在cookie中,仅仅s ...

随机推荐

  1. Struts2加载自定义库注意事项

    新建Struts2项目,添加Struts2的jar包时,往往通过导入自定义库的方式,导入自定义库时,有个地方必须要设置,否则项目无法正常执行,如图所示: 必须要按照上述方式对自定义库进行加载!

  2. Java中的注意点

    1.源文件以.java结束,源文件的基本组成部分是类(class) 2.每个源文件只能有一个public类,源文件名必须和该类的类名一致 3.每个Java程序的执行入口都是main()方法,固定写法为 ...

  3. miRNA|housekeeping|RNAi|siRNA|Oncomirs|miRBase|PMRD|TargetScan|miRDeep|miRNA target|seed regions|

    生物信息学-miRNA 转录组的分类: Noncoding RNA可分为负责Regulatory和housekeeping,housekeeping就是组织日常功能miRNA便是Regulatory ...

  4. stress施压案例分析——cpu、io、mem【命令分析】

    stress施压命令分析 一.stress --cpu 1 --timeout 600  分析现象?负载为啥这么高?top命令查看用户进程消耗的cpu过高(stress进程消耗的) 分析现象,可以看出 ...

  5. 爬虫时伪装header信息

    在爬虫时,一般需要伪装Agent信息,放在header中 1.header不是必传参数,在需要的时候进行伪装 2.header = {"User-Agent": "Moz ...

  6. Vimmer一套全语言支持的完美Vim配置——附Monaco字体

    本配置轻量,强大,支持流行语言,包括现代前段框架react,jsx,vue,pug(jade)高亮和格式化,支持各种语言的自动补全.同时新增了MonacoNerd字体,可以显示文件类型logo,Mon ...

  7. MyBatis like (模糊查询)

    select * from user where user_name like concat('%',#{userName},'%'); select * from user where user_n ...

  8. 将项目导入myeclipse后 tortoise svn 右键项目不能更新和提交

    使用 tortoise svn客户端将svn服务器上的项目checkout之后正常,可以更新也可以提交:当将这个项目导入MyEclipse之后,不能更新和提交了只出现svn升级工作副本这一字样:网上搜 ...

  9. 重启aliyun esc 需要重新启动redis

    /export/sorftware ./redis-server ../redis.conf redis-server  配置路径 如redis-server  /etc/redis.conf 不是后 ...

  10. 基础又重要的浮动(float)

    浮动 浮动的概念 什么是浮动,他在css中占据什么样的位置 网页布局的核心,就是用CSS来摆放盒子位置.如何把盒子摆放到合适的位置? 在css中有三种方式来定位位置 普通文档标准流方式 (默认方式) ...