当前位置: 首页 > Web前端 > vue.js

数组的reduce方法

时间:2023-03-31 16:54:31 vue.js

本文介绍了数组reduce的用法,三种常见的用法以及自己实现reduce的介绍。1.reduce的使用新手教程:reduce()方法接收一个函数作为累加器,数组中的每一个值(从左到右)开始递减,最后计算为一个值。reduce()可以用作函数compose的高阶函数。注意:reduce()不会对空数组执行回调函数。Syntax:array.reduce(function(total,currentValue,currentIndex,arr),initialValue)2.reduce的使用示例只是文字说明,可能难以理解reduce的使用。下面介绍几种常见的使用场景。①数组求和constarr=[1,2,3,4,5,6]constsum=arr.reduce((prev,item)=>prev+item,//第一个参数用于计算回调函数0//第二个参数是prev的初始值)上面代码中,item分别是每个数组元素。第一次执行时,prev=0;第二次执行时,prev的值是上次执行的返回值,即prev+item,直到执行完数组遍历,返回最后的结果,相当于0+arr[1]+arr[2]...在计算的回调函数中,我们可以写自己需要的逻辑判断,比如求数组中大于4的元素之和,添加判断语句:constsum=arr.reduce((prev,item)=>item>4?prev+item:prev,0)②Arraydeduplicationreduce可用于数组去重:constarr=[1,2,3,4,5,1,1,5,{},{},null,null,NaN,NaN]constarr2=arr.reduce((init,item)=>{init.includes(item)?null:init.push(item)返回init;},[])console.log(arr,arr2);init以一个空数组作为初始值,遍历时判断空数组init是否包含被遍历的元素。如果存在,则不执行任何操作。如果不存在,则将该元素插入到init数组中,最后返回init数组。includes的方式无法对空对象进行去重。③在框架中使用,比如vue中要解析的页面中的{{person.friend.name}}//模拟数据constdata={person:{friend:{name:'forceddd'}}}//模拟字符串conststr='person.friend.name'constres=str.split('.').reduce((data,key)=>data[key],data)console.log(res);//'forceddd'vue首先获取字符串person.friend.name,通过split转换成数组,然后使用reduce方法轻松获取data中的值,相当于data[person][friend][name]。3.reduce的实现Array.prototype.myReduce=function(cb,init=0){if(typeofcb!=='function'){thrownewError('第一个参数应该是一个函数')}if(!this.length){thrownewError('数组不能为空数组')}for(leti=0;i