以水平格式而不是垂直格式显示html/javascript生成的csv文件

以水平格式而不是垂直格式显示html/javascript生成的csv文件,javascript,html,csv,Javascript,Html,Csv,下面的代码输出csv文件,如下所示 日期、价值 inp2:val2 09172013,1 08172013,2 inp3:val3 09172013,10.1 08172013,20 这里第一列是日期,第二列是值 我怎样才能表现得像你 日期inp2 inp3 09172013, 1 , 10.1 08172013,2,20 谢谢 代码 <html"> <head> <title>JSON to CSV

下面的代码输出csv文件,如下所示

日期、价值

inp2:val2

09172013,1

08172013,2

inp3:val3

09172013,10.1

08172013,20

这里第一列是日期,第二列是值

我怎样才能表现得像你 日期inp2 inp3 09172013, 1 , 10.1 08172013,2,20

谢谢

代码

<html">
<head>
    <title>JSON to CSV</title>
    <script src="json.js" type="text/javascript"></script>
    <script type="text/javascript">
    var str = '';
    var json3 = 
        {"inp2:val2": {"data": [[09172013, 1], [08172013, 2]]}, "inp3:val3": {"data": [[09172013, 10.1], [08172013, 20.0]]}}
    str +='Date,Value'+ '\r\n';
    str +='inp2:val2,'+ '\r\n';
    DownloadJSON2CSV(json3["inp2:val2"].data);
    str +='inp3:val3,'+ '\r\n';
    DownloadJSON2CSV(json3["inp3:val3"].data);

    function DownloadJSON2CSV(objArray)
    {
        var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

       // var str = '';

        for (var i = 0; i < array.length; i++) {
            var line = '';

            for (var index in array[i]) {
                line += array[i][index] + ',';
            }


            line.slice(0,line.Length-1); 

            str += line + '\r\n';
        }        
    }
 window.open( "data:text/csv;charset=utf-8," + escape(str))
    </script>

</head>
<body>
    <h1>See the downloaded csv file ....</h1>
</body>
</html>
试一试


您可以尝试连接这两个数组,然后通过JSON-to-CSV方法传递它们。然后,在转换方法中,您可以创建一个对象,日期作为键,成对的值将是一个关联值的数组

这样,如果您有两个以上的关联值,那么您的代码将更加灵活

大概是这样的:

DownloadJSON2CSV(json3["inp2:val2"].data.concat(json3["inp3:val3"].data));

function DownloadJSON2CSV(objArray) {
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    var merged = {};

    for (var i = 0; i < array.length; i++) {
        var arr = array[i];

        if (!merged[arr[0]]) {
            merged[arr[0]] = [];
        }
        merged[arr[0]].push(arr[1]);
    }

    for (var obj in merged) {
        var line = obj;
        var arr = merged[obj];

        for (var i = 0; i<arr.length; i++) {
            line += ','+arr[i];
        }
        str += line + '\r\n';
    }
}
DownloadJSON2CSV(json3["inp2:val2"].data.concat(json3["inp3:val3"].data));

function DownloadJSON2CSV(objArray) {
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    var merged = {};

    for (var i = 0; i < array.length; i++) {
        var arr = array[i];

        if (!merged[arr[0]]) {
            merged[arr[0]] = [];
        }
        merged[arr[0]].push(arr[1]);
    }

    for (var obj in merged) {
        var line = obj;
        var arr = merged[obj];

        for (var i = 0; i<arr.length; i++) {
            line += ','+arr[i];
        }
        str += line + '\r\n';
    }
}