Json 将标题添加到CSV,并在Node.js中返回带有匹配字符串的行

Json 将标题添加到CSV,并在Node.js中返回带有匹配字符串的行,json,node.js,csv,highland.js,Json,Node.js,Csv,Highland.js,我试图返回匹配字符串上的行值 我从一个没有标题详细信息的csv开始。在将csv加载到内存中之后,我想我需要首先添加头,然后将数据转换为json,然后循环遍历数据以在数组中找到正确的对象 我使用highland创建了一个读取流并输出到对象。但是,换行符\r和\r\n不会被解析出来,而是被注入到值字符串中 这种方法似乎也没有解析整个文件,它输出了3行 highland(fs.createReadStream('example.csv', 'utf8')) .map(line => line

我试图返回匹配字符串上的行值

我从一个没有标题详细信息的csv开始。在将csv加载到内存中之后,我想我需要首先添加头,然后将数据转换为json,然后循环遍历数据以在数组中找到正确的对象

我使用highland创建了一个读取流并输出到对象。但是,换行符
\r
\r\n
不会被解析出来,而是被注入到值字符串中

这种方法似乎也没有解析整个文件,它输出了3行

highland(fs.createReadStream('example.csv', 'utf8'))
  .map(line => line.split(','))
  .map(parts => ({
    a: parts[0],
    b: parts[1],
    c: parts[2]
}))
.each(x => console.log(x))
最好将CSV结构化为JSON,然后使用
.filter()
方法匹配记录

1000+行文件的实际输出

{ a: '', b: 'CD53110' }
{ a: '\nRD40115', b: 'CD40315' }
{ a: '', b: '63\r\nRE15468' }
{ a: '96798', b: '5\r\nRR60899' }
示例输入片段

,CD510,13
,T9069,65
RCM22,TC633,101
RC023,87693,16
M2024,T7636,109

注意:前几行仅包含“b”和“c”列。

您可以将标题作为字符串写出,将csv设置为内存,并将两者连接起来

然后使用
csvtojson
模块,您可以将
csv
映射到
json
,并使用本机筛选函数返回匹配行

const fs = require('fs')
const csv = require('csvtojson')

let headers = 'a,b,c\n'
let file = fs.readFileSync(__dirname + 'example.csv', 'utf8')
let strToMatch = 'def123'

let c = headers + file

csv().fromString(c)
  .then((json) => {
    let arr = json.filter(el => el.a == strToMatch)
    res.json({
      a: arr[0]['a'],
      b: arr[0]['b'],
      c: arr[0]['c']
    })
})

将CSV转换为数组/对象,在之后添加标题非常简单。您将使用什么方法?循环创建的数组/对象,然后以相同格式创建另一个数组/对象,并使用更新的键名。您能提供一个示例说明您的意思吗?@Matthew您尝试过什么<代码>3。要求家庭作业帮助的问题必须包括到目前为止您为解决问题所做工作的摘要,以及您解决问题的困难说明。