node.js:将csv中的行读取到数组中



我想从一个大的csv文件中读取一些行。在SO上快速搜索一下,我发现了"懒惰"模块。这是我的尝试:

items = []
stream = fs.createReadStream src
lazy(stream)
    .lines
    .skip(1)
    .take(5)
    .forEach((line)->
        items.push line.toString())
    .on('end', ->
        console.log items)

但它什么都没印。我错过了什么?

'end'事件似乎不会沿链向下发射。只有'data''pipe'是。

根据.join()的定义,'pipe'似乎就是lazy所使用的。

# ...
    .forEach((line)->
        items.push line.toString())
    .on('pipe', () ->
        console.log items)

您也可以使用.join()来使用lazy自己的API:

# ...
    .forEach((line)->
        items.push line.toString())
    .join(() ->
        console.log items)

附带说明:您不一定需要自己收集items。您也可以使用.map():

lazy(stream)
    .lines
    .skip(1)
    .take(5)
    .map(item -> item.toString())
    .join((items) -> console.log items)

或者可能只使用:

# ...
    .map(String)
    .join(console.log);

相关内容

  • 没有找到相关文章