Javascript 如何将json数组转换为具有特定属性的CSV数据
我正在开发节点Javascript应用程序。我有一个数组,我想把这个数组转换成特定属性的CSV数据Javascript 如何将json数组转换为具有特定属性的CSV数据,javascript,node.js,csv,npm,Javascript,Node.js,Csv,Npm,我正在开发节点Javascript应用程序。我有一个数组,我想把这个数组转换成特定属性的CSV数据 var data = [ { "Name":"nom1", "Division":"first", "Cities":['city1','city2'] }, { "Name":"nom2", "Division":"first", "Cities":['city4','city5'] } ] 我想把这个数组转换成 Name,
var data =
[
{
"Name":"nom1",
"Division":"first",
"Cities":['city1','city2']
},
{
"Name":"nom2",
"Division":"first",
"Cities":['city4','city5']
}
]
我想把这个数组转换成
Name,Cities
nom1,city1
nom1,city2
nom2,city3
nom2,city4
我尝试使用npm包json2csv,它会在每一行重复标题
script.js
const { Parser, transforms: { unwind } } = require('json2csv');
const fs = require('fs');
const path = require('path');
let outputFile = path.resolve(__dirname + path.sep + './output.csv');
const myData = [
{
"Name":"nom1",
"Division":"first",
"Cities":['city1','city2']
},
{
"Name":"nom2",
"Division":"first",
"Cities":['city4','city5']
}
]
const fields = ['Name','Cities'];
const transforms = [unwind({ paths: ['Cities'] })];
for ( i=0; i < 2; i++ ) {
const json2csvParser = new Parser({ fields, transforms });
const csv = json2csvParser.parse(myCars[i]);
fs.appendFileSync(outputFile,csv);
}
我的要求是转换数据,我愿意使用任何新技术或其他npm包。有人能建议我怎么做吗?问题是因为您正在循环它,它会多次创建标头。问题是因为您正在循环它,它会多次创建标头。删除for循环并传递整个数据数组解决了此问题
const { Parser, transforms: { unwind } } = require('json2csv');
const fs = require('fs');
const path = require('path');
let outputFile = path.resolve(__dirname + path.sep + './output.csv');
const myData = [
{
"Name":"nom1",
"Division":"first",
"Cities":['city1','city2']
},
{
"Name":"nom2",
"Division":"first",
"Cities":['city4','city5']
}
]
const fields = ['Name','Cities'];
const transforms = [unwind({ paths: ['Cities'] })];
const json2csvParser = new Parser({ fields, transforms });
const csv = json2csvParser.parse(myCars);
fs.appendFileSync(outputFile,csv);
删除for循环并传递整个数据数组解决了这个问题
const { Parser, transforms: { unwind } } = require('json2csv');
const fs = require('fs');
const path = require('path');
let outputFile = path.resolve(__dirname + path.sep + './output.csv');
const myData = [
{
"Name":"nom1",
"Division":"first",
"Cities":['city1','city2']
},
{
"Name":"nom2",
"Division":"first",
"Cities":['city4','city5']
}
]
const fields = ['Name','Cities'];
const transforms = [unwind({ paths: ['Cities'] })];
const json2csvParser = new Parser({ fields, transforms });
const csv = json2csvParser.parse(myCars);
fs.appendFileSync(outputFile,csv);
这是什么?我的车?。我认为,由于您正在循环不断添加的标题,因此您需要避免该部分。谢谢@DILEEPTHOMAS,这是一个很好的捕获,我删除了循环,我已将其添加为答案,因为没有要添加的代码块。只是语句很好,请随意编辑。如果它对你有用,请接受并投票,这样对其他人会有帮助。还可以在答案中添加你删除的代码片段,这样会有帮助:)happy coding此处不涉及JSON
myData
是一个对象数组。这是什么myCars[i]?。我认为,由于您正在循环不断添加的标题,因此您需要避免该部分。谢谢@DILEEPTHOMAS,这是一个很好的捕获,我删除了循环,我已将其添加为答案,因为没有要添加的代码块。只是语句很好,请随意编辑。如果它对你有用,请接受并投票,这样对其他人会有帮助。还可以在答案中添加你删除的代码片段,这样会有帮助:)happy coding此处不涉及JSONmyData
是一个对象数组。