从0开始学习reduce

reduce为数组的一个方法,处理一些数组去重,获取数组出现次数等非常好用,写法为:

arr.reduce((preV,cur,index,oldArr)=>{})

传参: 

  • preV:上次调用函数的返回值
  • cur:当前元素
  • index:当前元素索引
  • arr:被遍历的数组

他还可以设置一个初始迭代值,如下:[],就为第一次preV的初始值

arr.reduce((preV,cur,index,oldArr)=>{},[])

初级应用:求和和乘机

let arr = [1,2,3,4,5]
console.log(arr.reduce((a,b)=> a+b)) // 15
console.log(arr.reduce((a,b)=> a*b)) // 120

当我设置初始迭代值时:

let arr=[1,2,3,4]
let sum = arr.reduce((pre,cur,index)=> {
   console.log(pre,cur,index)
return pre + cur },5) console.log(arr,sum)

运行结果:可以这么看

  • 5    1    0
  • 6    2    1
  • 8    3    1
  • 11  4     3 

[1,2,3,4]     15

可以理解为  5+1 为6    6 +2  为8  这么看  最后11 + 4 为15  所以最后为15

高级应用:

<1>计算数组中每个元素出现的次数

复制代码
let arr = ['name','age','short','long','name','name'];
let arrRsult = arr.reduce((pre,cur) => {
       console.log(pre,cur)
       if( cur in pre){
      pre[cur]++
    }else {
      pre[cur] = 1
    }
    return pre },{})
console.log(arrRsult);//{name:3,age:1,long:2,short:1}

可根据运行结果来看一下:
{} 'name'
{name:1} 'age'
{name:1,age:1} 'long'
{name:1,age:1,long:1} 'short'
{name:1,age:1,long:1,short:1} 'long'
{name:1,age:1,long:2,short:1} 'name'
{name:2,age:1,long:2,short:1} 'name'
 
复制代码

 <2>去除数组中重复的元素

复制代码
let arr = ['name','age','short','long','name','name'];
let arrResult = arr.reduce((pre,cur)=> {
     if(!pre.includes(cur)) {
          pre.push(cur) 
     }
     return pre;
},[])
console.log(arrResult);//[
'name','age','short','long']
复制代码

 

posted @   黑白棋学弟  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示