我对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' }
在打印时我也不能摆脱列标题,但这没什么大不了的。任何帮助将不胜感激。
答案 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);
});