Il y a deux questions ici:
- Comment convertir un tableau en chaîne csv
- Comment enregistrer cette chaîne dans un fichier
Toutes les réponses à la première question (à l'exception de celle de Milimetric) semblent ici exagérées. Et celui de Milimetric ne couvre pas les exigences altrénatives, comme entourer des chaînes de guillemets ou convertir des tableaux d'objets.
Voici mes points de vue à ce sujet:
Pour un simple csv, une carte () et une jointure () suffisent:
var test_array = [["name1", 2, 3], ["name2", 4, 5], ["name3", 6, 7], ["name4", 8, 9], ["name5", 10, 11]];
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
Cette méthode vous permet également de spécifier un séparateur de colonnes autre qu'une virgule dans la jointure interne. par exemple un onglet:d.join('\t')
D'un autre côté, si vous voulez le faire correctement et mettre des chaînes entre guillemets "", alors vous pouvez utiliser un peu de magie JSON:
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
si vous avez un tableau d'objets comme:
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, '');
window.open
. Cependant, vous pouvez créer un lien masqué dont l'download
attribut est défini sur le nom de fichier souhaité. Ensuite, en cliquant sur ce lien, le fichier sera téléchargé au nom que vous désirez, je l'ajouterai à ma réponse.