【问题标题】:Remove unwanted elements when converting JSON to CSV将 JSON 转换为 CSV 时删除不需要的元素
【发布时间】:2018-06-25 20:04:41
【问题描述】:

我有一组这样的 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);
}

但是上面的代码不起作用,任何人都可以帮助我吗?谢谢!

【问题讨论】:

    标签: javascript json angular csv typescript


    【解决方案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));    

    【讨论】:

    • var fields = Object.keys(array[0]).filter(field => field !== 'birthday' && field !== 'age');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多