ConverttoCSV 正在工作,但我希望在 JavaScript Util-Factory 中更改数据视图 angularJS

ConverttoCSV is working but i want the view of the data to be changed in JavaScript Util-Factory in angularJS

var downloadCSV = function() {
var deferred = $q.defer();
        var data = [
            {"2013" : {}},
            {"2014" : {}},
            {"2015" : {}}

    ];
    $q.all([
        $http({ 
            url: URLFactory.search(), 
            method: "POST",
            data: formatParams(true,'2013')
        }).then(function(d) {
            data[0]["2013"] = d.data.response;
        }),
        $http({ 
            url: URLFactory.search(), 
            method: "POST",
            data: formatParams(true,'2014')
        }).then(function(d) {
            data[1]["2014"] = d.data.response;
        }),
        $http({ 
            url: URLFactory.search(), 
            method: "POST",
            data: formatParams(true,'2015')
        }).then(function(d) {
            data[2]["2015"] = d.data.response;
        })
]).then(function(){
            var r_data = formatData1(data);
            var s_type_data = formatData2(data);
            var m_cat_data = formatData3(data);
    var r_data_csv = UtilsFactory.convertToCSV(r_data,"R 2013 - 2015", true);
            var s_type_data_csv = UtilsFactory.convertToCSV(s_type_data,"S Type 2013 - 2015", true);
            var m_cat_data_csv = UtilsFactory.convertToCSV(m_cat_data,"M Category 2013 - 2015", true);
          var csv =     region_data_csv + 
                        spend_type_data_csv + 
                        market_cat_data_csv;
    deferred.resolve(csv);
        });


return deferred.promise;    

    };
var formatData1 = function(data) {
var formatted = [];
        var struct = {
                "A" : {
                    "R" : "A"
                },
                "EE" : {
                    "R" : "EE"
                },
                "Gre" : {
                    "R" : "Gre"
                }
}
for (var i = 0; i < data.length; i++) {
            for (var j in data[i]) {
                var r = data[i][j].RDATA;
                    var stype = data[i][j].STYPE.CURRENT;
                for (var k = 0; k < r.length || k < stype.length; k++) {
                    struct[r[k].R][j + " (Mn " + currency_sym + ")"] [stype[k].STYPE] = parseFloat(r[k].VALUE + stype[k].VALUE).toFixed(2);
                };

            }
        };

        for (var i in struct) {
            formatted.push(struct[i]);
        };
        return formatted;
    };
var formatData2 = function(data) {

        var formatted = [];
        var struct = {
            "Cl" : {
                "S Type" : "Cl"
            },
            "Li" : {
                "S Type" : "Li"
            },
            "Ma" : {
                "S Type" : "Ma"
            }

        }
        for (var i = 0; i < data.length; i++) {
            for (var j in data[i]) {
                var stype = data[i][j].STYPE.CURRENT;
                for (var k = 0; k < stype.length; k++) {
                    struct[stype[k].STYPE][j + " (Mn " + currency_sym + ")"] = parseFloat(stype[k].VALUE).toFixed(2);
                };
            }
        };

        for (var i in struct) {
            formatted.push(struct[i]);
        };
        return formatted;
    };

现在我有 2 种格式的数据,在 convertToCSV 的帮助下,分别在 excel sheet 中显示 r_data 和 s_type_data。

数据以表格形式表示,如:

R 2013 - 2015

R    2013     2014    2015
A     2.5      NA       NA
EE    1.5      NA       NA
Gre    3       NA       NA



 S Type 2013-2015

    S Type   2013   2014   2015
     Cl        67    NA     NA
     Li        20    NA     NA
     Ma        19    NA     NA

我希望数据显示为:

R     S Type   2013   2014   2015
A       Cl      0.5    NA     NA
A       Li      1.2    NA     NA
A       Ma      1.8    NA     NA
Total           2.5


EE      Cl      
EE      Li
EE      Ma
Total           1.5

谁能告诉我应该在 struct 语句中更改什么?而且我可以用一个格式数据函数来代替 3 个格式数据吗?

我尝试将 stype 数据放入 formatdata1,但在控制台中显示:

TypeError: Cannot set property 'Li' of undefined
    at formatData1

enter code here

var deferred = $q.defer();
        var data = [{
            "2014": {}
        }, {
            "2015": {}
        }];
$http({
            url: URLFactory.searchxls(),
            method: "POST",
            data: formatParams(true)
        }).then(function(response) {
var all_data = formatData1(response.data.response.ALLDATA);
var all_data_csv = UtilsFactory.convertToCSV(all_data, " 2014 - 2015", true);
var csv = all_data_csv;

deferred.resolve(csv);
        });
        return deferred.promise;

    };

    var formatData1 = function(data) {

 var formatted = [];
        var R = {
            "R": {},
            "S_type": {},
       "2014": {},
            "2015": {}

        };
for (var i = 0; i < data.length; i++) {
            for (var j = 0; j < data[i].DATA.length; j++) {
            var R = angular.copy(R);
            R.R = data[i].col1name;
            R.S_type = data[i].col2name;

                    for (var k = 0; k < data[i].DATA[j].Values.length; k++) {
                     R['Sum of ' + data[i].DATA[j].Values[k]['col_YEAR']]= parseFloat(data[i].DATA[j].Values[k].VALUE).toFixed(2);    

                    }

                                formatted.push(R);
            }

}

    return formatted;
};