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

    要哪种自己选吧

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

报告相同问题?

悬赏问题

  • ¥30 Ryu控制器向微信API发送数据报错:RecursionError: maximum recursion depth exceeded
  • ¥15 C#绘制自定义六边形控件地图
  • ¥15 C#求自定义六边形继承panel方法代码
  • ¥15 缓冲区溢出攻击的测试
  • ¥35 四旋翼无人机滤波器设计
  • ¥100 关于#运维#的问题:promethues如何监控 pod 中的 tcp 连接数 和每个pod 间网络调用的情况(操作系统-linux)
  • ¥15 请问你现在还在做渗透吗
  • ¥15 c# 我要window应用程序 打开我的类库插件方法,能调用,调试和得到返回值
  • ¥15 (标签-matlab|关键词-m3)
  • ¥15 Excel vba 删除sheet12单元格内容时反而删除sheet2相应单元格内容