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');
})
当 {headers:true}
作为参数传递给 csv 时,
。为什么会发生这种情况以及如何解决? console.log(instList)
行给出 undefined
.fromStream
如果 {headers:true}
未作为参数传递,则 insList
数组会提供列名称以及该列中的所有其他唯一元素。
我希望 insList
数组保存第 1 列的所有唯一项(即 data[1]
)。
最佳答案
2022 年 5 月 31 日编辑:
repl.it中的示例工作代码
2022 年 5 月 31 日之前(适用于旧版本的 fast-csv)
我发现它工作得很好。然而,唯一的问题是数据是对象而不是数组。我已经用这个 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');
})
希望这有帮助
关于javascript - 如何跳过 csv 中的标题并解析列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54157174/