如何在角度JS中合并同月的数据

时间:2017-07-12 02:42:47

标签: javascript angularjs json

我有这个代码,按月显示数据。现在我需要总计同月的数据。例如,如果Month may有2个数据(2,4),则最终输出应为5月6日。目前它在表格中 5月2日 5月4日

  $.ajax({
        url: url,
        type: "Get",
        dataType: "json",
        data: { Year: selectedYear, Filtertxt: selectedQuarter},
        crossDomain: true,
        success: function (data) {
            if (data.length > 0) {

                var tr;
                var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
                for (var i = 0; i < data.length; i++) {

                    var date = new Date(data[i].CompDt);

                    var month = monthNames[date.getMonth()];

                    var monthdata = data[i].ID;
                    var totalamt = data[i].TotalAmt;
                    tr = $('<tr/>');
                    tr.append("<td>" + month + "</td>");
                    tr.append("<td>" + monthdata+ "</td>");
                    tr.append("<td>" + totalamt + "</td>");
                    $('#GraphTable').append(tr);
                }
                tr = $('<tr style="font-weight: bold; background-color: white" />');
                tr.append("<td></td>");
                tr.append("<td></td>");
                tr.append("<td></td>");

                $('#GraphTable').append(tr);
            }
            else {

                tr = $('<tr/>');
                tr.append("<th colspan='10' style='text-align:center'>No Data to display</th>");

                $('#GraphTable').append(tr);
            }

        } //end of success
    });

1 个答案:

答案 0 :(得分:0)

您可以先格式化JSON数据

csc

const formatted = {};

data.forEach((item) => {
  const date = new Date(item.CompDt);
  const month = months[date.getMonth()];

  if (!formatted[month]) {
    formatted[month] = item.TotalAmt;
  } else {
    formatted[month] += item.TotalAmt;
  }
});

然后,您可以使用格式化数据,但不确定如何处理const data = [ { ID: 1, CompDt: '01/01/2017', TotalAmt: 2, }, { ID: 2, CompDt: '01/01/2017', TotalAmt: 4, }, { ID: 3, CompDt: '02/01/2017', TotalAmt: 3, }, { ID: 4, CompDt: '04/01/2017', TotalAmt: 10, }, ]; const months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', ]; const formatted = {}; data.forEach((item) => { const date = new Date(item.CompDt); const month = months[date.getMonth()]; if (!formatted[month]) { formatted[month] = item.TotalAmt; } else { formatted[month] += item.TotalAmt; } }); console.log(formatted);