Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 合并每月的总金额_Jquery_Html_Angularjs_Json - Fatal编程技术网

Jquery 合并每月的总金额

Jquery 合并每月的总金额,jquery,html,angularjs,json,Jquery,Html,Angularjs,Json,我得到的是表格形式的数据。现在我需要合并当月的数据。如下所示显示表格。请帮我做这个。提前谢谢 例如:当前该表如下所示 Month | Total Amount Jan | 100 Jan | 100 Mar | 200 Apr | 300 Apr | 200 我希望输出像这样 Month | Total Amount Jan | 200 Mar | 200 Apr | 500 代码如下: success: function (

我得到的是表格形式的数据。现在我需要合并当月的数据。如下所示显示表格。请帮我做这个。提前谢谢 例如:当前该表如下所示

Month | Total Amount
Jan   | 100
Jan   | 100
Mar   | 200
Apr   | 300
Apr   | 200
我希望输出像这样

 Month | Total Amount
    Jan   | 200
    Mar   | 200
    Apr   | 500
代码如下:

    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 total = 0;
                var totalamt = data[i].TotalAmt;
                tr = $('<tr/>');
                tr.append("<td>" + month + "</td>");
                tr.append("<td>" + totalamt + "</td>");
                $('#GraphTable').append(tr);
            }

            var total = 0;
            for (var i = 0; i < data.length; i++) {
                total = total + data[i].TotalAmt;
            }
            $('#GraphTable').append('<tr style="font-weight: bold; background-color: white"><td colspan="2" align="right">Total: </td><td>' + total + '</td></tr>');
            tr = $('<tr style="font-weight: bold; background-color: white" />');
            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
});

成功更新以下代码

success: function (data) {
    if (data.length > 0) {

        var tr;
        var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

        var monthsAmt = [0,0,0,0,0,0,0,0,0,0,0,0];

        for (var i = 0; i < data.length; i++) {
            var date = new Date(data[i].CompDt);
            var monthIdx = monthsAmt[date.getMonth()];
            monthsAmt[monthIdx] += data[i].TotalAmt;
        }

        for(var i =0;i<12;i++){
        if(monthsAmt[i])
            tr = $('<tr/>');
            tr.append("<td>" +monthNames[i] + "</td>");
            tr.append("<td>" + monthsAmt[i] + "</td>");
            $('#GraphTable').append(tr);
          }
        }
        var total = 0;
        for (var i = 0; i < data.length; i++) {
            total = total + data[i].TotalAmt;
        }
        $('#GraphTable').append('<tr style="font-weight: bold; background-color: white"><td colspan="2" align="right">Total: </td><td>' + total + '</td></tr>');
        tr = $('<tr style="font-weight: bold; background-color: white" />');
        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
});
这可能会起作用:

var result=[];

        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 totalAmt=0;
                         if(data[i].CompDt==data[i+1].CompDt)
                         {  
                            totalAmt= data[i].totalamt+data[i+1].totalamt;
                            result.push({'Month':data[i].CompDt, 'TotalAmount':totalAmt})
                         }

            } //end of success
        });

我通过以下方式找到了解决方案:

 var tr;
                    var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
                    var monthsAmt = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

                    for (var i = 0; i < data.length; i++) {
                        var date = new Date(data[i].CompDt);
                        var monthIdx = monthNames[date.getMonth()];

                        switch(monthIdx)
                        {
                            case "Jan": monthsAmt[0] += data[i].TotalAmt;
                                break;

                            case "Feb": monthsAmt[1] += data[i].TotalAmt;
                                break;

                            case "Mar": monthsAmt[2] += data[i].TotalAmt;
                                break;

                            case "Apr": monthsAmt[3] += data[i].TotalAmt;
                                break;

                            case "May": monthsAmt[4] += data[i].TotalAmt;
                                break;

                            case "Jun": monthsAmt[5] += data[i].TotalAmt;
                                break;

                            case "Jul": monthsAmt[6] += data[i].TotalAmt;
                                break;

                            case "Aug": monthsAmt[7] += data[i].TotalAmt;
                                break;

                            case "Sep": monthsAmt[8] += data[i].TotalAmt;
                                break;

                            case "Oct": monthsAmt[9] += data[i].TotalAmt;
                                break;

                            case "Nov": monthsAmt[10] += data[i].TotalAmt;
                                break;

                            case "Dec": monthsAmt[11] += data[i].TotalAmt;
                                break;
                        }

                    }
                    for(var i =0;i<12;i++){
                        if(monthsAmt[i])
                            {
                            tr = $('<tr/>');
                        tr.append("<td>" +monthNames[i] + "</td>");
                        tr.append("<td>" + monthsAmt[i] + "</td>");
                        $('#GraphTable').append(tr);
                    }
                }

您的数据是什么?如果可能的话,我强烈建议您在从AJAX请求调用的服务器端代码中解决这个问题。@初学者。。。我同意Rory的观点,这是最好的解决方案,但可能存在无法编辑服务端代码的情况,在这种情况下,我们需要示例ajax响应来帮助您。我再说一遍,如果可能的话,我会修改服务器端的代码,然后我会使用Rory的声明。大家好,我不能编辑服务器端的数据。我们可以试试ajax本身吗?这里的数据是完成日期&每个完成日期到完成日期的总金额,我得到的是月份。@初学者,我添加了if条件。请根据结果arrayifdata[i]更改下半部分。CompDt==数据[i+1]。CompDt不是每次月份都会出现在每个订单的旁边。所以这不会发生work@yogendarji,根据问题,没有人建议一月可以在三月之后来。一切都会井然有序的。我们考虑所有月份的订单。不可能是一月,三月,一月那么最后两张唱片十二月,十二月怎么样?它会出错嗨,我试过你的代码了。它将所有金额相加并显示为1月,而不是1月working@beginner你能和我分享一下你的小提琴吗?嗨,我已经对代码做了一些修改,现在可以使用了。检查我将发布的答案。我将投票赞成你的答案。谢谢: