接收对象数组_js数组的reduce()累加方法的使用

本文介绍了如何使用JavaScript的reduce()方法来处理接收对象数组,并进行累加操作。通过实例展示了reduce()在处理数组时的用法,包括在数据分析、Cloudera、Spark和Hadoop开发中的应用。
摘要由CSDN通过智能技术生成
e306d9c9cbf5dcb3fa7bdb1cfd50d41d.gif更多精彩,请点击上方蓝字关注我们!

前言

阅读文章之前先来考虑一个问题,如何去实现迭代一个数组,并且把它累加到一个值中?首先能够想到的是设置一个初始值,然后通过循环遍历这个数组,将数组中的值一项一项累加起来,然后返回这个设置的值就是最终的结果。 这样实现起来也不算太复测,不需要写太多的代码,这篇就介绍一个数组的进阶一点的用法——reduce()的用法。

正文

1、reduce()的基本概念 定义:reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 对于空数组是不会执行回调函数的。 分析:reduce()针对非空数组执行操作,接收一个回调函数,这个函数作为一个累加器,定义累加的规则,然后循环遍历进行累加,返回最终结果,需要注意该方法没有创建新数组,同时也不会改变原数组,返回的结果是一个数值(该数值根据返回结果而定)。 根据上面的理解,先用自己的方法模仿下实现一个数组的累加。
 var arr=[1,2,3,4]        var rules=function(a,b){            return a+b        }        function myreduce(array,callback){            //校验            if (!Array.isArray(array)) {                throw('调用对象必须是一个数组');            }            if (typeof callback != 'function') {                throw('累计器必须是一个函数类型');            }            let initialValue=0//定义初始值为0            if (array.length === 0) {                return initialValue;            }            for (let index = 0; index < array.length; index++) {                initialValue=callback(initialValue,array[index])            }            return initialValue        }        var totalValue =myreduce(arr,rules)        console.log(totalValue)//输出10
2、reduce()的使用语法
/**        * @param function 必要参数,用于执行每个数组元素的函数        * @param initialValue 可选参数,传递给函数的初始值        */        array.reduce(        /**        * @param total 必要参数,初始值或计算结束后的结果。        * @param currentValue 必要参数,当前元素        * @param currentIndex 可选参数,当前参数的下标        * @param arr 可选参数,数组对象        */        function(total, currentValue, currentIndex, arr),        initialValue        );
分析:reduce()被一个非空数组调用(如果被非空数组调用返回undefined),接收两个参数,一个callback和一个设置的累加初始值,需要注意的是如果给reduce()传入了初始值,则在该值的基础是做累加操作,如果初始值不存在,则total为数组的第一项,currentValue为下一项,在第一项的基础上累加,相当于设置初始值为0,然后逐步累加。 3、常见使用方法 用reduce方法实现求数组的和
var arr=[1,2,3,4]var total=arr.reduce((a,b)=>a+b)console.log(total)//输出10
计算数组中元素出现的次数
let arr = ['A', 'B', 'C', 'B', 'A'];let times = arr.reduce((pre,cur)=>{if(cur in pre){    pre[cur]++}else{   pre[cur] = 1 }   return pre},{})console.log(times);//输出{A:2,B:2,C:1}
将二维数组转成一维
let arr = [[0, 1], [2, 3], [4, 5]]let newArr = arr.reduce((pre,cur)=>{   return pre.concat(cur)},[])console.log(newArr); // [0, 1, 2, 3, 4, 5]//同样可以实现多维到一维
求对象中属性的总和,如:求班级同学总分
 let info=[            {                 name:"小明",                score:100            },{                 naem:"小红",                score:110            },            {                name:"小强",                score:120            }        ]        let totalScore=info.reduce((pre,cur)=>{            return pre+cur.score        },0)        console.log(totalScore);//输出330
数组去重
 let arr = [1,2,3,4,4,1]    let newArr = arr.reduce((pre,cur)=>{        if(!pre.includes(cur)){          return pre.concat(cur)        }else{          return pre        }    },[])    console.log(newArr);// [1, 2, 3, 4]
以上就是本文的全部内容,希望给读者带来些许的帮助和进步,方便的话点个关注,小白的成长之路会持续更新一些工作中常见的问题和技术点。 本文完〜

图文 / 来源网络

版权归原作者所有,侵联删

de83416c690d4130308747b8031ce119.png

e2295a533721d57def38e765f79fa5c6.pngEND

c558c263fa7c80420a795d9bd93b170b.png

碧茂课堂精彩课程推荐:

1.Cloudera数据分析课;

2.Spark和Hadoop开发员培训;

3.大数据机器学习之推荐系统;

4.Python数据分析与机器学习实战;

883c35b15c902f44bdbde0931158ddbb.png

详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂

现在注册互动得海量学币,大量精品课程免费送!

8553329ef3456e3fd5c132dd0ed3ea89.png

关注最新行业动态,

加群进行技术交流!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值