js用数组的reduce方法实现一些简单的计算:数组累加,累乘,求最大项,去重,求每个元素出现的次数

  1. 累加
const arr = [1, 2, 3, 4]
arr.reduce((preV, curV) => preV + curV) // 10
  1. 累乘
const arr = [1, 2, 3, 4]
arr.reduce((preV, curV) => preV * curV) // 24
  1. 求数组最大项
const arr = [1, 4, 3 ,5, 2 ,4]
arr.reduce((preV, curV) => Math.max(preV, curV)) // 5
Math.max(...arr) // 5
  1. 计算数组中每个元素出现的次数
const heros = ['敌法师', '虚空假面', '风行者', '冰女', '敌法师', '风行者', '敌法师', '冰女']
function count(allHeros, hero) {
  if(hero in allHeros) {
    allHeros[hero]++
  } 
  else {
    allHeros[hero] = 1
  }
  return allHeros
}
heros.reduce(count, {})
// {敌法师: 3, 虚空假面: 1, 风行者: 2, 冰女: 2}
  1. 数组去重
const heros = ['敌法师', '虚空假面', '风行者', '冰女', '敌法师', '风行者', '敌法师', '冰女']
function deweight(allHeros, hero) {
  if(allHeros.indexOf(hero) === -1) {
    allHeros.push(hero)
  } 
  return allHeros
}
heros.reduce(deweight, [])
// ["敌法师", "虚空假面", "风行者", "冰女"]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值