let csv = require('fast-csv');
let fs = require('fs');
let readFileStream = fs.createReadStream(csvPath).setEncoding('utf-8');
let insList = [];
csv
.fromStream(readStream, {headers: true})
.on('data', function (data) {
if (data[1] !== '' && insList.indexOf(data[1]) === -1 )
insList.push(data[1]);
})
.on('end', function () {
console.log(insList);
console.log('done');
})
当将console.log(instList)
作为参数传递给undefined
时,{headers:true}
行给出csv.fromStream
。为什么会发生这种情况,我该如何解决?
如果未将{headers:true}
作为参数传递,则insList
数组将给出列名以及该列中的所有其他唯一元素。
我希望insList
数组容纳列1的所有唯一项(即data[1]
)。
答案 0 :(得分:1)
我发现它工作正常。但是,唯一的问题是数据是对象而不是数组。我已经对此csv进行了测试。
title,count
a,1
b,2
c,3
d,4
数据是一个格式为{title:'a',count:'1'}的对象。
const csv = require('fast-csv');
const fs = require('fs');
const readStream = fs.createReadStream('./test.csv').setEncoding('utf-8');
const insList = [];
csv
.fromStream(readStream, { headers: true, ignoreEmpty: true })
.on('data', function (data) {
console.log('data === ', data);
// major change is here
if (data && data !== {}) insList.push(data);
else console.log('empty data', data);
})
.on('end', function () {
console.log('end => ', insList);
console.log('done');
})
希望这会有所帮助