我非常擅长编写脚本并需要一些帮助。我有这个对象数组:
[ 'Gender', 'Customer Code', 'From', 'To', 'Transport Code' ] [ 'M', 'XX123', 'DAL', 'RSW', '555A' ] [ 'F', 'XXXHXH,XXA', 'DAL', 'RSW', '5A,HDSJNDSJ' ]
我通过fast-csv api从csv文件中读取。我发现在迭代对象时遇到困难,因为他们没有密钥。另外,我在""
中包含的几个多值字段需要格式化为单独的行/记录。我该怎么做才能将以下格式的数据作为csv file
?
Gender,Customer Code,From,To,Transport Code
M,XX123,DAL,RSW,555A
F,XXXHXH,DAL,RSW,5A
F,XXA,DAL,RSW,5A
F,XXXHXH,DAL,RSW, HDSJNDSJ
F,XXA,DAL,RSW, HDSJNDSJ
以下是我的代码:
var fs = require('fs');
var csv = require('fast-csv');
csv
.fromPath("journey_details.csv")
.on("data", function(data){
var count = 5;
var elements = '';
for(var element of data) {
while (count > 0) {
elements += element + ','
count--;
if(count == 0) {
elements += '\n';
fs.appendFile('output.csv',elements,function(error) {
if (error) {
console.error("write error: " + error.message);
} else {
console.log("Write Successful!");
count = 5;
}
});
}
}
}
})
.on("end", function(){
console.log("Task Complete...");
});
但它似乎没有成功。请指教......
答案 0 :(得分:0)
此方法使用递归来遍历每个索引,并根据每个值创建路径。
此方法不符合所需顺序,但会生成可能的组合。
name = "id"
type = "int"
max_length = 11
default = null
primary_key = 1
function loop(arr, acc, path, index) {
for (var i = index; i < arr.length; i++) {
var split = arr[i].split(',');
if (split.length) {
for (var s of split) {
var innerPath = loop(arr, acc, [...path, s], i + 1);
if (innerPath) acc.push(innerPath);
}
return null;
} else {
path.push(arr[i]);
}
}
acc.push(path);
}
var names = [ 'Gender', 'Customer Code', 'From', 'To', 'Transport Code' ];
var array = [ [ 'M', 'XX123', 'DAL', 'RSW', '555A' ],
[ 'F', 'XXXHXH,XXA', 'DAL', 'RSW', '5A,HDSJNDSJ' ]];
console.log(names.join());
array.forEach((a) => {
var acc = [];
loop(a, acc, [], 0);
acc.forEach(aa => console.log(aa.join()));
});