浅仓〆小星 2019-06-10 21:34 采纳率: 0%
浏览 653
已采纳

如何将每个月的账单总和统计,分充值和支出两种

array:[

            {

                "tradeTime":[

                    {

                        "amount":-5000,

                        "goodsInfo":"翡翠城租金",

                        "tradeTime":"2019-04-20"

                    },
                                            {

                        "amount":2000,

                        "goodsInfo":"微信充值",

                        "tradeTime":"2019-04-21"

                    },

                    {

                        "amount":-1200,

                        "goodsInfo":"五联西苑租金",

                        "tradeTime":"2019-04-25"

                    },

                    {

                        "amount":-200,

                        "goodsInfo":"爱与家宾馆",

                        "tradeTime":"2019-04-30"

                    }

                ]

            },

            {

                "tradeTime":[

                    {

                        "amount":-3800,

                        "goodsInfo":"丁香花园",

                        "tradeTime":"2019-05-20"

                    },
                                            {

                        "amount":5000,

                        "goodsInfo":"微信充值",

                        "tradeTime":"2019-05-22"

                    },

                    {

                        "amount":-2500,

                        "goodsInfo":"滨兴小区",

                        "tradeTime":"2019-05-28"

                    }

                ]

            },

            {

                "tradeTime":[

                    {

                        "amount":-2800,

                        "goodsInfo":"滨苑小区",

                        "tradeTime":"2019-06-08"

                    }

                ]

            }

        ]
  • 写回答

1条回答 默认 最新

  • 张兴华(MarsXH.Chang) 前端领域新星创作者 2019-06-11 15:05
    关注

    好熟悉的数组,上次那个按月份分组我回答过,再帮你一次

    let array = [{
          "tradeTime":[{
                    "amount":-5000,
                    "goodsInfo":"翡翠城租金",
                    "tradeTime":"2019-04-20"
                },{
                    "amount":2000,
                    "goodsInfo":"微信充值",
                    "tradeTime":"2019-04-21"
                },{
                    "amount":-1200,
                    "goodsInfo":"五联西苑租金",
                    "tradeTime":"2019-04-25"
          },{
                    "amount":-200,
                    "goodsInfo":"爱与家宾馆",
                    "tradeTime":"2019-04-30"
                }]
            },{
                "tradeTime":[{
                    "amount":-3800,
                    "goodsInfo":"丁香花园",
                    "tradeTime":"2019-05-20"
                },{
                    "amount":5000,
                    "goodsInfo":"微信充值",
                    "tradeTime":"2019-05-22"
                },{
                    "amount":-2500,
                    "goodsInfo":"滨兴小区",
                    "tradeTime":"2019-05-28"
                }]
            },{
                "tradeTime":[{
                    "amount":-2800,
                    "goodsInfo":"滨苑小区",
                    "tradeTime":"2019-06-08"
                }]
            }]
            function statisticsAmount(arr) {
                let result = []
                arr.forEach(item => {
                    let income = 0;
                    let expend = 0;
                    let date = item.tradeTime[0].tradeTime;
                    let month = date.slice(date.indexOf('-')+1, date.lastIndexOf('-'))
                    item.tradeTime.forEach(info => {
                        if (info.amount >= 0) {
                            income += info.amount
                        } else {
                            expend += info.amount
                        }
    
                    })
                    result.push({
                        month: month, // 月份
                        income: income, // 收入
                        expend: expend // 支出
                    })
                });
                return result;
            }
            console.log(statisticsAmount(array))
    

    或者返回成对象格式:

    function statisticsAmount(arr) {
                let result = {}
                arr.forEach(item => {
                    let income = 0;
                    let expend = 0;
                    let date = item.tradeTime[0].tradeTime;
                    let month = date.slice(date.indexOf('-')+1, date.lastIndexOf('-'))
                    item.tradeTime.forEach(info => {
                        if (info.amount >= 0) {
                            income += info.amount
                        } else {
                            expend += info.amount
                        }
    
                    })
                    result[month] = {
                        income: income, // 收入
                        expend: expend // 支出
                    }
                });
                return result;
            }
    

    要哪种自己选吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能