目录

一、数组求和

二、数组去重

三、合并二维数组

四、统计出现的次数

五、按类型进行分类


reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。循环遍历能做的,reduce都可以做。

reduce() 可以作为一个高阶函数,用于函数的 compose。

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

用法:

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 描述
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值

一、数组求和

不设置初始值时,数组的第一项就会默认为初始值,下面的例子执行三次;

// 3 + 2

// 5 + 1

// 6 + 7

const numbers = [3, 2, 1, 7];
const sum = numbers.reduce((total, currentValue) => {console.log(total, currentValue);return total + currentValue;
});
console.log(sum);
// 3 2
// 5 1
// 6 7
// 13

设置初始值时,下面的例子执行四次;

// 0 + 3

// 3 + 2

// 5 + 1

// 6 + 7

const numbers = [3, 2, 1, 7];
const sum = numbers.reduce((total, currentValue) => {console.log(total, currentValue);return total + currentValue;
}, 0);
console.log(sum);
// 0 3
// 3 2
// 5 1
// 6 7
// 13

二、数组去重

const numbers = [3, 2, 1, 7, 3, 5, 7];
const resArr = numbers.reduce((prev, currentValue) => {if (prev.indexOf(currentValue) === -1) {prev.push(currentValue);}return prev;
}, []);
console.log(resArr); // [3, 2, 1, 7, 5]

三、合并二维数组

const numbers = [[3, 2], [1, 7], [3, 5], [7]];
const resArr = numbers.reduce((prev, currentValue) => {return prev.concat(currentValue);
}, []);
console.log(resArr); // [3, 2, 1, 7, 3, 5, 7]

四、统计出现的次数

const arr = ["a", "b", "c", "a", "b"];
const resArr = arr.reduce((prev, currentValue) => {if (prev[currentValue]) {prev[currentValue]++;} else {prev[currentValue] = 1;}return prev;
}, {});
console.log(resArr); // { a: 2, b: 2, c: 1 }

五、按类型进行分类

const arr = [{name: "Apple",num: 12,},{name: "Apple",num: 13,},{name: "Banana",num: 14,},
];
const resArr = arr.reduce((prev, currentValue) => {// 根据name进行分类var key = currentValue["name"];if (!prev[key]) {prev[key] = [];}prev[key].push(currentValue);return prev;
}, {});
console.log(resArr);
// {
//   Apple: [ { name: 'Apple', num: 12 }, { name: 'Apple', num: 13 } ],
//   Banana: [ { name: 'Banana', num: 14 } ]
// }

js中的reduce函数详细解释相关推荐

  1. php new对象 调用函数,关于JS中new调用函数的原理介绍

    这篇文章主要介绍了关于JS中new调用函数的原理介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 JavaScript 中经常使用构造函数创建对象(通过 new 操作符调用一个函数) ...

  2. c语言中signal函数详细解释说明

    c语言中signal函数详细解释说明     对于 信号处理函数 位于 <signal.h> 中. void ( *signal( int sig, void (* handler)( i ...

  3. 【printf】sprintf字符串转数值、数值转字符,拼接字符,函数详细解释 Printf 打印数值...

    1.数值转成字符: sprintf个函数,如: sprintf(s, "%d", 123); //产生"123" 2.字符串转成数值: while(*BandR ...

  4. js中的匿名函数和匿名自执行函数

    1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id=& ...

  5. js中的offset函数和position

    js中的offset函数,其本身是个对象,它含有两个属性,top和left,其属性值是数字,无单位,是针对文档内容的,即浏览器 而position函数,也有上述两个属性,但它是针对父元素的偏移量 转载 ...

  6. python中的reduce() 函数

    在 Python3 中,reduce() 函数已经被从全局命名空间里移除了,它现在被放置在 functools 模块里,需要通过引入 functools 模块来调用 reduce() 函数: from ...

  7. js中同名的函数的调用情况

    转自:https://www.cnblogs.com/wshiqtb/p/3480597.html html中如果出现函数同名时: 如果有多个外部引入的js文件,例如a.js和b.js(引入顺序假定是 ...

  8. JS中自动执行函数小结

    JS中自动执行函数小结 请看以下两个函数: 1.function a(){ 2.    alert("a") 3.} 1.var b= function(){ 2.    aler ...

  9. underscore.js中的节流函数debounce及trottle

    函数节流   throttle and debounce的相关总结及想法 一开始函数节流的使用场景是:放止一个按钮多次点击多次触发一个功能函数,所以做了一个clearTimeout setTimeou ...

最新文章

  1. TypeError: 'module' object is not callable 原因分析(python模块导入注意事项)
  2. Django-5.1 模型层 单表操作
  3. vue-cli 3.0 使用全过程讲解
  4. CSS之Flexbox制作CSS布局易如反掌
  5. win8安装python3后不能编程_Win8.1 64位系统,python3.4 肿么安装gevent成功后不能用
  6. 三维重建 几何方法 深度学习_基于深度学习的三维重建算法:MVSNet、RMVSNet、PointMVSNet、Cascade系列...
  7. 电脑删除的文件怎么恢复?你要找的方案
  8. mysql主从搭建配置(mysql version5.7.22)
  9. 如何在 Apple TV 上更快地打开您喜爱的应用?
  10. php 扫描条形码,将条形码扫描仪集成到PHP应用程序中?
  11. CSS的Border属性 属性 边框 可以 定义 宽度 颜色 CSS solid 类型 文本
  12. 测试前的准备:搭建测试环境
  13. c++配合Cheat Engine实现cs1.6外挂
  14. suffix arrary
  15. 视频编码c语言,MPEG4codec(c) MPEG4视频格式的编解码源码 C语言实现 - 下载 - 搜珍网...
  16. Segmentation Fault原因总结
  17. 逆向加固的apk详细教程
  18. More Effective C++读书笔记
  19. SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
  20. 在html页面实时显示系统时间

热门文章

  1. git 修改历史信息
  2. 计算机视觉中的小样本学习综述
  3. 学习笔记(14):零基础掌握 Python 入门到实战-重复利用,事半功倍
  4. AIBlockChain:“知名博主独家讲授”人工智能创新应用竞赛【精选实战作品】之《基于计算机视觉、自然语言处理、区块链和爬虫技术的智能会议系统》软件系统案例的界面简介、功能介绍分享之二、会中智能
  5. 【python第一章 基础捋顺,第二章 python基础语法】
  6. 微信公众号+获取文章内容【只是记录自己的学习过程】
  7. 武汉新华电脑学校计算机协会,第十一届大学生计算机应用能力与信息素养大赛·武汉新华颁奖典礼圆满落幕!...
  8. 计算机设备名称英语词汇
  9. 讨论-职场中年人,你的危机感都来源于哪里
  10. 不写一行代码(一):实现安卓基于GPIO的LED设备驱动