reduce对数组及数组对象的常见操作
语法:
array.reduce(function(prev, currentValue, currentIndex, arr), initialValue)
prev: 初始值,或者是计算结束后的返回值
currentValue: 当前元素
currentIndex: 当前元素的索引
arr: 当前元素所属的数组对象
initialValue: 初始值
什么时候用它?
当多个数据最终变成一个数据的时候
有道面试题,给定一个数组,让我求它的平均数,我先用for循环利用每项累加,除以数组长度来计算的
面试官让我用其他方法解决,这时候就可以用reduce来解决
原数组 var arr = [1, 2, 3, 6, 8]
// 数组求和
var sum = arr.reduce((prev, currentVal) => {
return prev+ currentVal;
}, 0)
// 平均数
var average = arr.reduce((prev, currentVal) => {
return (prev + currentVal) / arr.length;
}, 0)
// 数组去重
var newArr = arr.reduce((prev, cur) => {
prev.indexOf(cur) === -1 && prev.push(cur);
return prev;
},[]);
// 对象数组求和
var result = [
{ name: 'lily', age: 18 },
{ name: 'lucy', age: 20 },
{ name: 'lulu', age: 35 }
];
var sumAge = result.reduce((accumulator, cur) => {
return accumulator + cur.age;
}, 0);
// 求数组最大值
var maxVal = arr.reduce((prev, cur) => {
return prev > cur ? prev : cur;
}, 0);
大概这些,后期再加~~
reduce对数组及数组对象的常见操作的更多相关文章
- reduce方法简单实现数组中对象去重
js数组的reduce方法,接收一个函数(必须)和指定的初始值(非必须)作为参数,函数有三个参数,分别为初始值,当前项,当前数组,进行累加或者累积操作,初始值为每次累加或者累计后的结果 注意:在ie9 ...
- JavaScript数组常见操作
JavaScript数组常见操作 Tip: 右键在新标签中打开查看清晰大图 下面介绍JavaScript中的数组对象遍历.读写.排序等操作以及与数组相关的字符串处理操作 创建数组 一般使用数组字面量[ ...
- JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理
壹 ❀ 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但 ...
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- java数组复制的几种常见用法
1.1数组复制的几种常见用法 1.1.1System.arraycopy的用法 int[] src = {1,3,5,7,9,11,13,15,17}; int[] dest = {2,4,6,8,1 ...
- reduce多种方法计算数组中某个值的出现次数
先来了解下reduce用法 arr.reduce(callback[, initialValue]) callback执行数组中每个值的函数,包含四个参数: accumulator 累计器累计回调的返 ...
- 学习javaScript必知必会(3)~数组(数组创建,for...in遍历,辅助函数,高级函数filter、map、reduce)
一.数组: 1.js是弱语言,js中的数组定义时:不用指定数据类型.不用功指定数组长度:数组可以存储任何数据类型的数据 2.数组定义的[ ] 的实质: [] = new Array(); {} = n ...
- VB默认属性、动态数组、Range对象的默认属性的一点不成熟的想法
1.默认属性 VB6.0有默认属性的特性.当没有给对象指定具体的属性时,"默认属性"是VB6.0将使用的属性.在某些情形下,省略常用属性名,使代码更为精简. 因为CommandBu ...
- javascript里面的数组,json对象,动态添加,修改,删除示例
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 用vector容器代替数组 ——使用数组初始化vector对象
在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...
随机推荐
- 计算机网络基础05-Web应用
1 Web最重要的构成基础 网页 网页互相连接 1.1 网页 网页包含多个对象 对象:HTML文件.图片文件.视频文件.动态脚本等 基本HTML文件:包含对其它对象引用的连接 1.2 对象的寻址 UR ...
- XML02
组成部分: 1. 文档声明 1. 格式: 2. 属性列表: * version:版本号,必须的属性 * encoding:编码方式.告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1 * ...
- 2021级《JAVA语言程序设计》上机考试试题8
专业教师功能页: <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- 另类数据获取法-eax法
有些基址非常难追 所以我们用一个另类的方法来追一下 复杂的汇编代码 ------------------ call 0x****** mov esi,eax; mov ***, dword ptr d ...
- Linux:grep 查找文件内容
在 Windows 中打开文件用查找功能可以查找我们想要的字符,前提是要打开文件.Linux 有一个指令不用打开文件就可以查询字符,而且支持正则表达式-- grep 指令.不仅如此,grep 还支持在 ...
- Cesium之基础控件
1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...
- KingbaseES R6集群物理copy方式手工添加新备库节点
案例说明:对于主库数据量比较大的环境,在添加新节点是可以采用在线clone方式创建新的备库节点,也可以在离线的状态下,直接拷贝其中一个备库的所有集群相关目录来创建新的备库节点.本案例介绍了通过离线物理 ...
- (五)REDIS-哨兵与集群
概念介绍: Sentinel(哨兵)是Redis的高可用性解决方案,主要是通过一个或多个Sentinel实例组成的Sentinel系统对任意多个主服务器以及这些主服务器的所有从服务器进行监视,当某个主 ...
- el-input 使用 回车键会刷新页面的问题
使用el-input的时候,光标聚焦在输入框,按下回车,会刷新页面.这是因为当el-form表单中只有一个input时,按下回车建会自动触发页面的提交功能, 产生刷新页面的行为 解决办法 法一: fo ...
- ubutu22.04开启ssh配置
1.查看ubuntu版本信息 lsb_release -a 2.更新系统 sudo apt update && sudo apt upgrade -y 如果出现Ign:1 ...InR ...