浅仓〆小星 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;
            }
    

    要哪种自己选吧

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

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)