【问题标题】:How to read from local .csv file in javascript to fill an array of strings?如何从 javascript 中的本地 .csv 文件中读取以填充字符串数组?
【发布时间】:2021-01-16 15:54:15
【问题描述】:

我有一个 CSV 文件,每行有 100 个名称。我想创建一个包含每个名称的数组。目前,我的 CSV 文件如下所示:

Names
Bob
Joe
Tim
Allan 

我想按如下方式填充数组:

const csv = require('csv-parser');
const fs = require('fs');    
const names= [];
fs.createReadStream('./Names.csv')
  .pipe(csv())
  .on('data', (data) => names.push(data.Names))
  .on('error', (error) => loggingService.getDefaultLogger().error(error))
  .on('end', () => loggingService.getDefaultLogger().info("Array of Names:" + names));

使用我创建的日志记录服务,我可以看到 CSV 中的所有名称。当我执行 console.log(names) 时,我得到一个空数组。可能有人知道这是为什么吗?更具体地说,有没有更好的方法从 CSV 文件中读取,以便我可以用该文件的内容填充字符串数组,每行 1 个数组条目作为字符串?

【问题讨论】:

  • 我想知道你的 console.log() 语句在哪里?如果在呈现代码之后 - 是的,名称将为空,因为读取是异步的,并且您进入控制台的速度比从文件中读取完成的速度更快
  • 我对CSV库不熟悉,但是在下面的sn-p中,devices是从哪里来的? (data) => devices.push(data.Names)
  • @bensiu 在代码sn-p之后。如果我想遍历名称数组并对其进行处理,我将如何克服异步读取?理想情况下,我想填充数组,然后在数组中执行一个 forEach 元素,创建一个新对象。在此之前 forEach 我不确定 names 数组是否已满。
  • @Hassan 这是一个错字。它应该是:names.push(data.Names)。

标签: javascript csv fs read.csv


【解决方案1】:

可能有效,但不确定。

编辑:是的,工作就像一个魅力。

const fs = require('fs');

let Names = [];

fs.readFile('./names.csv', 'utf8', (err, dat) => {
  if(err)
    console.error("Error while opening file");

  Names = String(dat).split('\n');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多