javascript - 如何跳过 csv 中的标题并解析列?

标签 javascript node.js csv

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/

相关文章:

node.js - 如何从 node-argon2 解决这个 "TypeError: pchstr must contain a $ as first char"?

javascript - Gulp JS Build 无法按预期工作

javascript - 通过ajax获取分页页面的内容,过滤它并将其附加到当前页面

javascript - 使用 toDataURL 设置导航的背景?

node.js - 在 Dockerfile 中安装 Node ?

javascript - 如何将数据从 Node.js(webpack) 发送到纯 Node.js(express)?

java - 从 csv 文件中提取数据并放入二维数组 - 重构

javascript - 如何将 CSV 文件导入 HTML 表单,以及将 HTML 表单导出为 CSV 文件

json - 将客户端 Json 下载为 CSV

javascript - 使用 underscore.js 从对象/数组中仅检索一个字段