我正在尝试解析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
答案 0 :(得分:1)
来自文档:
解析器选项
columns
:作为数组的字段列表,接受第一行并返回列名称的用户定义回调,如果在第一个CSV行中自动发现,则为true,默认为null,会影响结果数据集。感觉记录将是对象而不是数组。