使用Node.js,如何从CSV文件的列中添加值?

时间:2018-06-23 00:03:42

标签: javascript json node.js csv

我对node.js相对较新,正在做一个小项目,并被卡住了。我正在提取一个未压缩的csv文件,并尝试使用node添加指定列中的值。

这是我的代码:

var fs = require('fs');
var csv = require('fast-csv');

var stream = fs.createReadStream("my.csv");

var sum = 0;

csv
     .fromStream(stream, { headers: [, , "total_master_images", , , , , , , , , , , , , , , , , , , , , ] })
     .on("data", function(data) {
         console.log(data);
      })
     .on("end", function() {
         console.log("--------------------------------");
      });

以及一些输出:

{ total_master_images: 'total_master_images' }
{ total_master_images: '1' }
{ total_master_images: '2' }
{ total_master_images: '2' }
{ total_master_images: '2' }
{ total_master_images: '466' }
{ total_master_images: '990' }
{ total_master_images: '5953' }
{ total_master_images: '1473' }

在打印时我也不能摆脱列标题,但这没什么大不了的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

从它的外观看,data事件在解析行时发生,end在它们全部完成时发生。您可以做的是在data内添加总和,然后在end中注销总和。

 .on("data", function(data) {
     // Convert from string to number
     var num = Number(data.total_master_images)

     // If the number is not valid, it'll end up being `NaN`, so check if it's not NaN first
     if (!Number.isNaN(num)) {
       sum += num
     }
  })
 .on("end", function() {
     console.log("The sum is " + sum);
  });