Javascript 如何在使用csv解析器解析csv后获得输出?

Javascript 如何在使用csv解析器解析csv后获得输出?,javascript,node.js,stream,output,node-csv-parse,Javascript,Node.js,Stream,Output,Node Csv Parse,我正在使用csvparser解析一个巨大的csv(1.2GB),并试图从解析的csv中获取某些列数据。我试图在处理后将数据推送到数组,但只得到空数组作为输出。如何修复此代码 var parse = require('csv-parse'); var output = [] var parser = parse({ delimiter: '\t', columns: true }, function(err, csvLine) { for (var l = 0; l <

我正在使用csvparser解析一个巨大的csv(1.2GB),并试图从解析的csv中获取某些列数据。我试图在处理后将数据推送到数组,但只得到空数组作为输出。如何修复此代码

var parse = require('csv-parse');

var output = []
var parser = parse({
   delimiter: '\t',
   columns: true
}, function(err, csvLine) {
   for (var l = 0; l < csvLine.length; l++) {
      output.push(csvLine[l].id)
   }
});

console.log(output)

fs.createReadStream('file.csv', {
   encoding: 'utf8'
}).pipe(parser);
var parse=require('csv-parse');
变量输出=[]
var parser=parse({
分隔符:'\t',
专栏:对
},函数(err,csvLine){
对于(var l=0;l
console.log(output)
上的输出总是一个空数组。请帮我解决这个问题


我试着理解这里的帖子-。但是我无法理解和修复代码。

因为异步。行控制台.log(输出)在解析器变量声明之后运行。此时,输出变量中没有值

当从csv读取所有数据时,必须在循环后访问输出变量,如下所示

var parse=require('csv-parse');
var fs=需要('fs');
变量输出=[]
var parser=parse({
分隔符:',',
专栏:对
},函数(err,csvLine){
对于(var l=0;l
因为异步。行console.log(输出)在解析器变量声明之后运行。此时,输出变量中没有值

当从csv读取所有数据时,必须在循环后访问输出变量,如下所示

var parse=require('csv-parse');
var fs=需要('fs');
变量输出=[]
var parser=parse({
分隔符:',',
专栏:对
},函数(err,csvLine){
对于(var l=0;l
使用
fast csv
将文件解析为
ReadableStream
,然后使用异步迭代(
用于wait
)逐行处理。更简单

const csv = require("fast-csv")

let myList=[];

const csvStream = csv.fromPath(filename);
for await(const row of csvStream) {
    myList.push(row[1]); // get the second column
}

使用
fast csv
将文件解析为
ReadableStream
,然后使用异步迭代(
用于wait
)逐行处理它。更简单

const csv = require("fast-csv")

let myList=[];

const csvStream = csv.fromPath(filename);
for await(const row of csvStream) {
    myList.push(row[1]); // get the second column
}

这看起来是异步的。尝试将
console.log(output)
移动到
函数(err,csvLine){}
中,移动到
for
看似异步的循环之后。尝试将
console.log(output)
移动到
函数(err,csvLine){}
循环之后,谢谢@mukesh。这起作用了。console.log()应始终处于函数级别。我们读多个文件时也是这样吗?谢谢@mukesh。这起作用了。console.log()应始终处于函数级别。当我们读取多个文件时也是这样吗?