js中的reduce函数详细解释
目录
一、数组求和
二、数组去重
三、合并二维数组
四、统计出现的次数
五、按类型进行分类
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函数详细解释相关推荐
- php new对象 调用函数,关于JS中new调用函数的原理介绍
这篇文章主要介绍了关于JS中new调用函数的原理介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 JavaScript 中经常使用构造函数创建对象(通过 new 操作符调用一个函数) ...
- c语言中signal函数详细解释说明
c语言中signal函数详细解释说明 对于 信号处理函数 位于 <signal.h> 中. void ( *signal( int sig, void (* handler)( i ...
- 【printf】sprintf字符串转数值、数值转字符,拼接字符,函数详细解释 Printf 打印数值...
1.数值转成字符: sprintf个函数,如: sprintf(s, "%d", 123); //产生"123" 2.字符串转成数值: while(*BandR ...
- js中的匿名函数和匿名自执行函数
1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id=& ...
- js中的offset函数和position
js中的offset函数,其本身是个对象,它含有两个属性,top和left,其属性值是数字,无单位,是针对文档内容的,即浏览器 而position函数,也有上述两个属性,但它是针对父元素的偏移量 转载 ...
- python中的reduce() 函数
在 Python3 中,reduce() 函数已经被从全局命名空间里移除了,它现在被放置在 functools 模块里,需要通过引入 functools 模块来调用 reduce() 函数: from ...
- js中同名的函数的调用情况
转自:https://www.cnblogs.com/wshiqtb/p/3480597.html html中如果出现函数同名时: 如果有多个外部引入的js文件,例如a.js和b.js(引入顺序假定是 ...
- JS中自动执行函数小结
JS中自动执行函数小结 请看以下两个函数: 1.function a(){ 2. alert("a") 3.} 1.var b= function(){ 2. aler ...
- underscore.js中的节流函数debounce及trottle
函数节流 throttle and debounce的相关总结及想法 一开始函数节流的使用场景是:放止一个按钮多次点击多次触发一个功能函数,所以做了一个clearTimeout setTimeou ...
最新文章
- TypeError: 'module' object is not callable 原因分析(python模块导入注意事项)
- Django-5.1 模型层 单表操作
- vue-cli 3.0 使用全过程讲解
- CSS之Flexbox制作CSS布局易如反掌
- win8安装python3后不能编程_Win8.1 64位系统,python3.4 肿么安装gevent成功后不能用
- 三维重建 几何方法 深度学习_基于深度学习的三维重建算法:MVSNet、RMVSNet、PointMVSNet、Cascade系列...
- 电脑删除的文件怎么恢复?你要找的方案
- mysql主从搭建配置(mysql version5.7.22)
- 如何在 Apple TV 上更快地打开您喜爱的应用?
- php 扫描条形码,将条形码扫描仪集成到PHP应用程序中?
- CSS的Border属性 属性 边框 可以 定义 宽度 颜色 CSS solid 类型 文本
- 测试前的准备:搭建测试环境
- c++配合Cheat Engine实现cs1.6外挂
- suffix arrary
- 视频编码c语言,MPEG4codec(c) MPEG4视频格式的编解码源码 C语言实现 - 下载 - 搜珍网...
- Segmentation Fault原因总结
- 逆向加固的apk详细教程
- More Effective C++读书笔记
- SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
- 在html页面实时显示系统时间
热门文章
- git 修改历史信息
- 计算机视觉中的小样本学习综述
- 学习笔记(14):零基础掌握 Python 入门到实战-重复利用,事半功倍
- AIBlockChain:“知名博主独家讲授”人工智能创新应用竞赛【精选实战作品】之《基于计算机视觉、自然语言处理、区块链和爬虫技术的智能会议系统》软件系统案例的界面简介、功能介绍分享之二、会中智能
- 【python第一章 基础捋顺,第二章 python基础语法】
- 微信公众号+获取文章内容【只是记录自己的学习过程】
- 武汉新华电脑学校计算机协会,第十一届大学生计算机应用能力与信息素养大赛·武汉新华颁奖典礼圆满落幕!...
- 计算机设备名称英语词汇
- 讨论-职场中年人,你的危机感都来源于哪里
- 不写一行代码(一):实现安卓基于GPIO的LED设备驱动