javascript - 将 CSV 解析为哈希数组

标签 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 中使用过这种格式

最佳答案

来自文档:

Parser options

  • columns: List of fields as an array, a user defined callback accepting the first line and returning the column names or true if autodiscovered in the first CSV line, default to null, affect the result data set in the sense that records will be objects instead of arrays.

关于javascript - 将 CSV 解析为哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25700113/

相关文章:

javascript - 从 document.ready ie8 设置 iFrame 高度

javascript - 引用错误: utag is not defined only in private mode in Firefox 45. 0.1

linux - 如何在bash脚本中用逗号分割列表

javascript - 无法加载资源: the server responded with a status 404(not found)

javascript - Vuejs1 : How can I encode a Vuejs argument string in PHP

sql - Knex + Postgresql + node - 如何为选定的列调用 postgresql 函数

node.js - Swagger 可以根据现有的快速路由自动生成其 yaml 吗?

json - Azure CLI 内联参数不起作用

php - fputcsv 写入空白文件

python-3.x - 为什么我无法将云函数中的 csv 分隔符设置为管道