我有一个csv文件,看起来像这样:

求和,Anne,mois

2732,2002,1

1030,2002,2

1661,2002,7

1450,2002,3

1308,2002,4

2131,2002,5

2891,2002,6

2748,2002,8

2140,2002,9

1499,2002,10

1211,2002,11

1398,2002,12

5376,2003,1

2780,2003,2

1927,2003,3

2266,2003,4

3670,2003,5

4071,2003,6

4764,2003,7

5261,2003,8

我想使这个CSV文件像这样的json数据序列化:
年度数据按月排序

{
        "2002": [
            1, //January
            22, //February
            33,
            44,
            345,
            45,
            232,
            43423,
            324324,
            324324,
            324324,
            6556
        ],
        "2003": [
            3.5,
            4,
            4.3,
            6.6,
            11.7,
            13.2,
            16.2,
            16.5,
            12.7,
            8.4,
            5,
            5.3
        ]
}


我正在尝试使用Javascript将此csv转换为json,编写了许多正则表达式,但是都失败了,我发现我必须非常仔细地考虑此csv文件的顺序,它太复杂了,有人可以帮助我吗?请

最佳答案

function parseCSV(data, rowSeperator) {
    var rows = data.split(rowSeperator || '\n');
    var json = {};
    rows.slice(1).forEach(function (row) {
        var columns = row.split(',');
        var sum = parseInt(columns[0]||0, 10)
        var year = parseInt(columns[1], 10);
        var month = parseInt(columns[2], 10);
        if (year && month) {
            json[year] = json[year] || [];
            json[year][month-1] = sum;
        }
    });
    return json;
}

var json = parseCSV(csvData);


http://jsfiddle.net/qug4thb9/

10-07 18:13