我有一组像这样的JSON数据:
{"id":1,"name":"Sam","birthday":"12December","age":"15"},
{"id":2,"name":"Ash","birthday":"12January","age":"23"}
我通过函数传递数据:
ConvertToCSV(data)
现在我可以在csv中获取id,姓名,生日和年龄。但是,我想在转换过程中删除生日列,以便它不会显示在生成的csv中。我怎么能这样做?
当前输出:
id | name | birthday | age
1 | Sam | 12December | 15
2 | Ash | 12January | 23
期望的输出:
id | name | age
1 | Sam | 15
2 | Ash | 23
以下是原始代码:
ConvertToCSV(data) {
var array = $.parseJSON('[' + data + ']');
var fields = Object.keys(array[0]);
var replacer = function(key, value) { return value === null ? '' : value }
var csv = array.map(function(row){
return fields.map(function(fieldname){
return JSON.stringify(row[fieldname], replacer)
}).join(',')
})
csv.unshift(fields.join(',')) // add header column
var str = csv.join('\r\n');
return str;
}
我根据here将以下内容添加到函数中:
for(var i = array.length - 1; i >= 0; i--) {
var index = array[i].birthday;
array[i].splice(index, 1);
}
但是上面的代码不起作用,有人可以帮助我吗?谢谢!
答案 0 :(得分:1)
过滤字段以删除“生日”:
var fields = Object.keys(array[0])
.filter(field => field !== 'birthday');
完整代码(使用原生JSON.parse):
var data = `
{"id":1,"name":"Sam","birthday":"12December","age":"15"},
{"id":2,"name":"Ash","birthday":"12January","age":"23"}
`;
var ConvertToCSV = (data) => {
var array = JSON.parse('[' + data + ']');
var fields = Object.keys(array[0]).filter(field => field !== 'birthday');
var replacer = function (key, value) { return value === null ? '' : value }
var csv = array.map(function (row) {
return fields.map(function (fieldname) {
return JSON.stringify(row[fieldname], replacer)
}).join(',')
})
csv.unshift(fields.join(',')) // add header column
var str = csv.join('\r\n');
return str;
};
console.log(ConvertToCSV(data));