Angularjs:将字符串CSV格式转换为Array

时间:2017-01-13 03:24:56

标签: angularjs arrays csv

我不知道如何在$ scope.fileContent(我从我的CSV文件中得到它)中转换我的字符串数据。我打印了我的$ scope.fileContent:

console.log($ scope.fileContent)=

heading1,heading2,heading3,heading4,heading5
value1_1,value2_1,value3_1,value4_1,value5_1
value1_2,value2_2,value3_2,value4_2,value5_2

但我想要一个函数将它转换为这样的数组:

[
  { heading1:"value1_1",heading2:"value2_1",heading3:"value3_1",heading4:"value4_1",heading5:"value5_1" } 
  { heading1:"value1_2",heading2:"value2_2",heading3:"value3_2",heading4:"value4_2",heading5:"value5_2" }
]

如何在Angularjs中实现它的任何想法?

我看到了一些例子,但我没有接受,我想最让人感到的是this.

1 个答案:

答案 0 :(得分:1)

使用CSV解析库可能是最好的。我之前使用过Papa Parse,效果很好。但是,如果你想自己做...

function csvToArray(csvString) {
    var lines = csvString.split('\n');
    var headerValues = lines[0].split(',');
    var dataValues = lines.splice(1).map(function (dataLine) { return dataLine.split(','); });
    return dataValues.map(function (rowValues) {
        var row = {};
        headerValues.forEach(function (headerValue, index) {
            row[headerValue] = (index < rowValues.length) ? rowValues[index] : null;
        });
        return row;
    });
}

var x = "heading1,heading2,heading3,heading4,heading5\nvalue1_1,value2_1,value3_1,value4_1,value5_1\nvalue1_2,value2_2,value3_2,value4_2,value5_2";
console.log(csvToArray(x));

// OUTPUT
// [ { heading1: 'value1_1',
//    heading2: 'value2_1',
//    heading3: 'value3_1',
//    heading4: 'value4_1',
//    heading5: 'value5_1' },
//  { heading1: 'value1_2',
//    heading2: 'value2_2',
//    heading3: 'value3_2',
//    heading4: 'value4_2',
//    heading5: 'value5_2' } ]