reduce()累计器理解与使用实例

本文详细介绍了如何使用Python内置的reduce()函数实现数组的累加操作,包括数值数组和对象属性的累计,以及去重技巧。通过实例演示了如何在不同场景下利用reduce()进行高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于reduce()

reduce()语法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

arr.reduce((accumulator,curValue,curIndex,arr)=>{ 
	return accumulator+curValue
},initialValue)
  • accumulator 累计器
  • currentValue 当前值
  • currentIndex 当前索引
  • array 数组

如果提供了initialValue,accumulator取值为initialValue,currentValue取值数组中第一个值
如果没有提供initialValue,accumulator取值数组中第一个值,currentValue取值数组中第二个值

  1. 求数组累计值
let arr = [1,2,3,4,5]
let newArr = []
let one = arr.reduce((accumulator,currentValue,currentIndex,array)=>{
   newArr.push(accumulator+currentValue)
   return accumulator+currentValue
})
console.log(newArr,one) //[3, 6, 10, 15] 15
  1. 求对象累计值
let arr = [{x:1}, {x: 2}, {x: 3},{x:4},{x:5}]
let newArr = []
let one = arr.reduce((accumulator,currentValue,currentIndex,array)=>{
   console.log(accumulator,currentValue.x,accumulator+currentValue.x)
   if(accumulator !== 0){
      newArr.push(accumulator+currentValue.x)
   }
   return accumulator+currentValue.x
},0)
console.log(newArr,one) //[3, 6, 10, 15] 15
  1. 去重
let arr = [2,3,1,3,3,2];
let newArr = arr.reduce((accumulator,currentValue)=>{
   console.log(accumulator,currentValue,'11111111')
   if(!accumulator.includes(currentValue)){ // 累计值查找不到当前值的话,当前值拼接到累计值中
      return accumulator.concat(currentValue)
   }else{
      return accumulator
   }
},[])
console.log('newArr',newArr)   //[2, 3, 1]
newArr = newArr.sort((first,second)=>{  return  first - second}) // 升序
console.log('newArr',newArr)  //[1,2,3]
  1. 求元素的次数
 const arr = ['A', 'B', 'T', 'B', 'A'];
 let one = arr.reduce( (accumulator, currentValue) => {
    if (currentValue in accumulator) {
       console.log(accumulator,'currentValue')
       accumulator[currentValue]++;
    } else {
       accumulator[currentValue] = 1;
    }
    return accumulator;
 }, {});
 console.log(one) // {A: 2, B: 2, T: 1}

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值