以CSV数组编辑项目 - fast-csv node.js

时间:2016-05-11 02:31:30

标签: javascript node.js csv

我正在尝试编辑由 Node.JS 中的 fast-csv 构建的阵列中的单个元素。

当包含单个数组索引时,Fast-csv正在编辑所有列,而在使用2D数组索引时,没有数组索引。

问题是,是否可以在javascript中编辑CSV中的单个元素?

输入(input.csv):

hello,1,'1',forty-two, 
yellow,brown,red,orange

当前输出:

[ 'hello', '1', 696, 'forty-two', '' ]
[ 'yellow', 'brown', 696, 'orange' ]

目标输出:

[ 'hello', 'julian', 696, 'forty-two', '' ]
[ 'yellow', 'brown', 696, 'orange' ]

逻辑:

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


fs.createReadStream('./IOinput/input.csv')
    .pipe(csv())
    .on('data', function(data){
        //console.log(data);
        data[0][1] = 'julian';
        data[2] = 696;

        console.log(data);
    })

    .on('end', function(data){
        console.log('Read finished');
    })

依赖关系:

npm install fast-csv

1 个答案:

答案 0 :(得分:2)

根据文档,当读入记录或行时会触发data事件。那么我要做的是创建一个数组并将每个记录推送到数组上,然后在最后进行更改。另一种方法是保持对正在读取的行的计数器并相应地进行分支。我个人认为第一种选择更容易。以下是它的外观:

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

var dataArr = [];
fs.createReadStream('./IOinput/input.csv')
    .pipe(csv())
    .on('data', function(data){
        dataArr.push(data); // Add a row
    })

    .on('end', function(){
        dataArr[0][1] = 'julian';
        dataArr[0][2] = 696;
        dataArr[1][2] = 696;
        console.log(dataArr);
        console.log('Read finished');
    })