【问题标题】:Calculate array subtotals by category [duplicate]按类别计算数组小计[重复]
【发布时间】:2020-10-04 16:54:48
【问题描述】:

我有一个数组:

const expenses = [
        { key: '1', sum: '100', category: 'car' },
        { key: '2', sum: '200', category: 'food'},
        { key: '3', sum: '300', category: 'furniture'},
        { key: '4', sum: '400', category: 'food'},
        { key: '5', sum: '700', category: 'car' },
    ]

如何获得具有特定类别总数的新数组或对象? 喜欢

newArray = [
{category: 'car' totalSum:800},
{category: 'food' totalSum:600},
{category: 'furniture' totalSum:300}
]

感谢您的任何建议。

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    使用Array.prototype.reduce():

    const expenses = [{key:'1',sum:'100',category:'car'},{key:'2',sum:'200',category:'food'},{key:'3',sum:'300',category:'furniture'},{key:'4',sum:'400',category:'food'},{key:'5',sum:'700',category:'car'},],
        
          result = Object.values(expenses.reduce((r, {category, sum}) =>
            (r[category] = {category, totalSum: (r[category]?.totalSum || 0)+ +sum}, r), {}))
            
    console.log(result)
    .as-console-wrapper{min-height:100%;}

    【讨论】:

    • 嗨 igen Yevgen。我可以请你解释一下这段代码吗?原因是我试图在返回结果之前更改 'category' 值(例如,从 'food' 到 'myFood')。我该怎么做?
    • @Vova : 您需要更改所有 category 值还是仅更改其中一些值(基于某些条件)?
    • 它不是类别)我需要修改日期而不是它。我在数组中有额外的元素:日期:'2020 年 6 月 8 日',日期:'2020 年 6 月 5 日'。我想总计“2020 年 6 月”
    • 我有这个代码来制作它。 -> 让日期 = result.map(elem => elem.date.split(' ').slice(1).join(' '));但不知道如何在代码中添加它)
    • @Vova : that 有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2022-01-06
    • 2016-01-10
    相关资源
    最近更新 更多