dfzz 2022-08-22 13:33 采纳率: 66.7%
浏览 20

如何利用reduce等函数实现分组求和

原始数组
['no1',34,'usd',200,'rmb'],
['no1',30,'usd',200,'rmb'],
['no2',50,'usd',200,'rmb'],
['no2',40,'eur',320,'rmb'],
['no3',50,'hkd',100,'rmb']

诉求形成按单号、币种分组得到新的两个数组,并按币种求和,以及汇总RMB字段

如按单号、币种
['no1',64,'usd']

按RMB汇总
['no1',400,'rmb'],
['no2',520,'rmb']

  • 写回答

3条回答 默认 最新

  • 豆芽同学 2022-08-22 14:40
    关注

    用对象的话 准确性还高点 现在只能通过索引去找
    let arr = [
    ['no1',34,'usd',200,'rmb'],
    ['no1',30,'usd',200,'rmb'],
    ['no2',50,'usd',200,'rmb'],
    ['no2',40,'eur',320,'rmb'],
    ['no3',50,'hkd',100,'rmb']
    ]

    getTotal('usd', arr)
    getTotal('rmb', arr)

    function getTotal(type, arr) {
    let list = arr.filter(item => {
    return item.indexOf(type) != -1;
    })
    let index = type == 'rmb' ? 3 : 1;
    return {
    total: list.reduce((sum, item) => {
    return sum += item[index];
    }, 0),
    list: list.reduce((sum, item) => {
    return sum += [item[0], item[index], index == 1 ? item[2] : item[4]];
    }, 0),
    }
    }

    评论

报告相同问题?

问题事件

  • 创建了问题 8月22日

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使