数组的reduce方法

一、reduce的理解

        arr.reduce(function(pre,cur,index,arr){},init)

或者  arr.reduce(function(pre,cur,index,arr){})

-- arr 表示原数组  

-- pre 表示上一次调用回调函数后的返回值,或者原始值 init。

        如果init设置的值,那么第一次调用回调时,pre值就是init的值,如果没有设置init的值,那么第一次调用回调时,pre值就是arr第一项元素的值

-- cur 当前正在处理的数组元素,若提供init值,cur为数组第一项的值,否则数组第2项的值

-- index 当前正在处理的数组元素的索引 ,若提供init值,则索引为0,否则,索引为1

-- init 表示初始值

二、reduce的应用

1、数组求和或者求乘积

var arr = [1,2,3,4,5]

var sum = arr.reduce((pre,cur) => {
    return pre+cur
})

console.log(sum) //15

var sum2 = arr.reduce((pre,cur)=>{
    return pre + cur
},2)

console.log(sum2) // 17

2、计算数组中每个元素出现的次数

var arr = ['张三','张三','李四','王五','李四']
var sumArr = arr.reduce((pre,cur)=>{
    if(cur in pre){
        pre[cur] ++
    }else{
        pre[cur] = 1
    }
    return pre
},{})

3、数组的扁平化处理

var arr = [1,[2,[3,4],5],6]

const newArr = (arr) => {
    return arr.reduce((pre,cur) => {
        return pre.concat(Array.isArray(cur) ? newArr(cur) : cur)
    },[])
} 
console.log(newArr(arr))

4、数组去重

var arr = [1,1,1,4,5,2,2,4,8,5,8,8,6]

var newArr = arr.reduce((pre,cur)=>{
    if(pre.indexOf(cur) < 0){
        pre.push(cur)
    }
    return pre
},[])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值