将CSV解析为哈希数组

时间:2014-09-06 12:13:43

标签: javascript node.js csv

我正在尝试解析CSV文件并创建一个哈希数组。我使用自己的代码实现了它,但我不认为它是最佳的。我正在尝试使用CSV-Parser,但我只输出一个数组数组(不是哈希/对象数组)。

以下是我没有图书馆的第一次尝试示例:

var fs = require('fs');
var readCSVData = function(data){
  var contactsArray = data.split("\n"); 
  var contactsArrayOfHashes = [];

for(var i=1; i < contactsArray.length; i++){
        var singleData = contactsArray[i].split(",");   

            contactsArrayOfHashes.push({
                first_name: singleData[0],
                last_name: singleData[1],
                months_since_contact: singleData[2],
                email_address: singleData[3]
            });
    }
    return contactsArrayOfHashes;
};

fs.readFile("contacts.csv","utf8", function(err, data){

    var csvData = readCSVData(data);
    console.log(csvData);       

});

这是我尝试使用CSV包(这是我只获取阵列数组的地方)

var fs = require('fs');
var csv = require("csv");

fs.readFile("contacts.csv","utf8", function(err, data){
    var friendsList = [];
    var csvData = readCSVData(data);
    csv.parse(data, function(err, parseData){
        for(var i=1; i < parseData.length; i++){
            friendsList.push(parseData[i]);
        }
    })

console.log(friendsList);

});

CSV文件:

first_name,last_name,months_since_contact,email_address
John,Doe,0,john@john.com

如何使用CSV npm创建哈希数组?有没有办法用列映射我的数组索引?

理想情况下,我想将列映射到行

例如:我的数组似乎是数组,但它们被映射到我的CSV文件中的主要字段,如下所示:

var CSVData = [John,Doe,0,john@john.com]
CSVData[0]["email_address"] outputs --> john@john.com

我相信我之前使用过这种格式的ruby CSV Class

1 个答案:

答案 0 :(得分:1)

来自文档:

  

解析器选项

     
      
  • columns:作为数组的字段列表,接受第一行并返回列名称的用户定义回调,如果在第一个CSV行中自动发现,则为true,默认为null,会影响结果数据集。感觉记录将是对象而不是数组。
  •