0

我有以下处理我的 csv 文件的函数。不幸的是,csv 文件有一列也使用逗号作为千位分隔符(我对这个导出的 csv 文件及其结构没有影响)。因此,在某一行的每个文件中,都会有一个额外的列。

在 on('data', ()) 方法中,我已经通过将两个字段连接在一起并删除冗余字段来修复此值。但最后,这仍然会导致行带有额外的列。通过这样做,第 4 列将是空的..

我想让每个字段在删除字段时都向左“移动”。有可能操纵这个吗?还是我需要一个额外的函数来处理输出并忽略所有“空”字段。

function readLines(file, options, cb){
  let results = [];
  fs.createReadStream(file)
  .pipe(csv(options))
  .on('data', (data) => {
    if(Object.keys(data).length == 59){
      data['2'] = data['2'] + data['3']
      delete data['3']
    }
    results.push(data)
  })
  .on('end', () => {
    cb(results)
  });
}
4

1 回答 1

0

我通过过滤回调函数中的返回对象来修复它:

cb(Object.values(results).map((r) => {
      return r.filter((x) =>{
        return x != null && x !== ""
      })
    }))

可能不是最有效的,但到目前为止我能想到的最好的。

于 2020-08-05T13:26:42.313 回答