JavaScript array to CSV

后端 未结 9 882
不知归路
不知归路 2020-12-02 06:23

I\'ve followed this post How to export JavaScript array info to csv (on client side)? to get a nested js array written as a csv file.

The array looks like:



        
9条回答
  •  我在风中等你
    2020-12-02 07:00

    for a simple csv one map() and a join() are enough:

    var csv = test_array.map(function(d){
        return d.join();
    }).join('\n');
    
    /* Results in 
    name1,2,3
    name2,4,5
    name3,6,7
    name4,8,9
    name5,10,11
    

    This method also allows you to specify column separator other than a comma in the inner join. for example a tab: d.join('\t')

    On the other hand if you want to do it properly and enclose strings in quotes "", then you can use some JSON magic:

    var csv = test_array.map(function(d){
       return JSON.stringify(d);
    })
    .join('\n') 
    .replace(/(^\[)|(\]$)/mg, ''); // remove opening [ and closing ] brackets from each line 
    
    /* would produce
    "name1",2,3
    "name2",4,5
    "name3",6,7
    "name4",8,9
    "name5",10,11
    

    if you have array of objects like :

    var data = [
      {"title": "Book title 1", "author": "Name1 Surname1"},
      {"title": "Book title 2", "author": "Name2 Surname2"},
      {"title": "Book title 3", "author": "Name3 Surname3"},
      {"title": "Book title 4", "author": "Name4 Surname4"}
    ];
    
    // use
    var csv = data.map(function(d){
        return JSON.stringify(Object.values(d));
    })
    .join('\n') 
    .replace(/(^\[)|(\]$)/mg, '');
    

提交回复
热议问题