Javascript 节点js,从csv文件中读取特定列,并将其转换为数组以用于其他函数

Javascript 节点js,从csv文件中读取特定列,并将其转换为数组以用于其他函数,javascript,arrays,node.js,csv,Javascript,Arrays,Node.js,Csv,我正在尝试基本掌握使用NodeJS解析CSV文件 我编写了一个简单的函数来获取数组中每个字符串的最后一个字符(在我的例子中,它总是一个数字),并显示最大的数字: var ARRAY_OF_ALL_email=[“email_1”,“email_22”] 函数GET_NUMBER(){ 设最大_数; for(设i=0;i 2 然而,我想做的是解析一个csv文件,只提取该文件的col2,并将值存储在我的变量var ARRAY\u of_ALL\u电子邮件中所以它的行为就像我这样声明数组:var a

我正在尝试基本掌握使用NodeJS解析CSV文件

我编写了一个简单的函数来获取数组中每个字符串的最后一个字符(在我的例子中,它总是一个数字),并显示最大的数字:

var ARRAY_OF_ALL_email=[“email_1”,“email_22”]
函数GET_NUMBER(){
设最大_数;
for(设i=0;i
这段代码按预期工作:

>node index.js
> 2
然而,我想做的是解析一个csv文件,只提取该文件的col2,并将值存储在我的变量
var ARRAY\u of_ALL\u电子邮件中所以它的行为就像我这样声明数组:
var array\u OF_ALL\u email=[“email\u 1”、“email\u 2”]

我成功地解析了整个csv文件,但是当我试图只使用某个列时,我总是失败

您能告诉我如何仅使用CSV文件中的某一列并将其存储为数组,以便我可以在我的
GET_NUMBER
函数中使用它吗?我知道它应该可以通过索引或名称来实现,但它根本不适合我

csv的示例:

col1,col2,col3,col4
aaa1,aaa_1,aaa3,aaa4
bbb1,bbb_2,bbb3,bbb4
ccc1,ccc_3,ccc3,ccc4
为此,我使用了一个csv软件包(
npm安装csv

谢谢

编辑

在Barkaas的帮助下,我做到了:

const parse=require('csv-parse/lib/sync')//包括
常数fs=要求(“fs”);
//从文件加载数据
var global_data=fs.readFileSync(“data.csv”).toString();
//数据集
常量输入=全局_数据;
//调用npm包并保存到记录
常量记录=解析(输入{
专栏:对,
跳过空行:真
});
//将csv解析的输出映射到列
const column_two=records.map(rec=>rec[“col2”]);
//将值分配给函数中使用的另一个变量
所有电子邮件的变量数组=第二列/[“aaa_1”、“bbb_44444”、“ccc_3333”]
//函数返回每个字符串中的最大数字
函数GET_NUMBER(){
设最大_数;
for(设i=0;i

这对我很有用。

我用您的示例数据集改编了来自的示例。以下代码未经测试

const parse = require('csv-parse/lib/sync'); //include

//the dataset
const input = `
col1,col2,col3,col4
aaa1,aaa_1,aaa3,aaa4
bbb1,bbb_2,bbb3,bbb4
ccc1,ccc_3,ccc3,ccc4
`;

//calling the npm package and save to records
const records = parse(input, {
  columns: true,
  skip_empty_lines: true
});
//map the output from csv-parse to the column
const column_two = records.map(rec => rec["col2"]);

谢谢,我在我的代码中实现了它,它可以工作,对于常量变量,我使用这种方式获取数据:
fs.readFileSync(“data.csv”).toString()这是正确的方法吗?这对我来说很有效,但我不确定这是否是我应该如何做到的。谢谢,这是正确的方法。实现这一点的其他方法是使用异步函数。但这只会影响性能。是的,我将其标记为已解决,非常感谢:-)