js一个很牛的数组函数reduce

简介: reduce函数里面有两个 参数,第一个参数为一个回调函数,第二个参数为返回值的初始值;第一个回调函数里也有两个参数,第一个参数为返回值的初始值,第二个参数为数组的第一个元素,例如map函数的item; 

  1.最最常规用法:累加数组中的元素 

const aa=[1,2,3,4,5]
const bb=aa.reduce((a,b)=>{
     a=b+a;
     return a
},0)
console.log(bb); //输出结果为15

上图reduce的初始值为0,使用回调函数的第一个参数a的值也为0;b的值为数组的第一个元素;对数组进行循环,a的值等于上一次循环a的值+当前循环b的值,最后返回a,这样就完成了累加;

注意:在回调函数中一定要把a的值retun出去!!!!

2.利用reduce对数组去重操作


const aa=['n','n','m','c','c','v','v']
const bb=aa.reduce((a,b)=>{
         if(!a.includes(b)){ //includes() 方法用于检查数组中是否包含指定的元素,并返回一个布尔值。
           a.push(b)
         }
         return a;
},[])
console.log(bb); //输出结果为['n', 'm', 'c', 'v']

很巧妙地利用了,初始返回值为一个空数组,如果数组中不包含该元素就添加进去

3.利用reduce判断一个数组中的元素在数组中出现了多少次

 const nn=['n','n','n','m','m','k','k']
     const mm= nn.reduce((a,b)=>{
            if(!a[b]){
                a[b]=1
            }else{
                a[b]++
            }
            return a
     },{})
     console.log(mm);//输出结果为{n: 3, m: 2, k: 2}

 很巧妙地利用了初始值为一个空对象,如果第一次循环对象中没有这个值,就让这个对象的属性等于1,后面如果再次出现了,这个对象的属性就加一;

 4.利用reuduce扁平化数组

const aa=[[1,2,3],[3,5,6],8,9,10,[8,9,10,[1,2,4,3]]]
const bb=(arry)=>{
 const cc=arry.reduce((a,b)=>{
        if(Array.isArray(b)===false){
           a.push(b)
            }
            if(Array.isArray(b)===true){
            a.push(...bb(b));
            }
            return a
    },[])
    return cc
}
console.log(bb(aa)); 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值