Es gibt hier zwei Fragen:
- Wie konvertiert man ein Array in einen CSV-String
- Wie speichert man diesen String in einer Datei
Alle Antworten auf die erste Frage (außer die von Milimetric) scheinen hier übertrieben zu sein. Und die von Milimetric deckt nicht alternative Anforderungen ab, wie das Umgeben von Zeichenfolgen mit Anführungszeichen oder das Konvertieren von Arrays von Objekten.
Hier sind meine Ansichten dazu:
Für ein einfaches CSV sind map() und join() ausreichend:
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');
/* Ergebnis ist
name1,2,3
name2,4,5
name3,6,7
name4,8,9
name5,10,11
Mit dieser Methode können Sie auch einen Spaltentrenner andere als ein Komma im inneren join angeben. Zum Beispiel ein Tab: d.join('\t')
Andererseits, wenn Sie es ordentlich machen und Zeichenfolgen in Anführungszeichen "" einschließen möchten, dann können Sie etwas JSON-Magie verwenden:
var csv = test_array.map(function(d){
return JSON.stringify(d);
})
.join('\n')
.replace(/(^\[)|(\]$)/mg, ''); // entferne öffnende [ und schließende ]
// Klammern von jeder Zeile
/* würde erzeugen
"name1",2,3
"name2",4,5
"name3",6,7
"name4",8,9
"name5",10,11
Wenn Sie ein Array von Objekten haben wie :
var data = [
{"title": "Buchtitel 1", "autor": "Name1 Nachname1"},
{"title": "Buchtitel 2", "autor": "Name2 Nachname2"},
{"title": "Buchtitel 3", "autor": "Name3 Nachname3"},
{"title": "Buchtitel 4", "autor": "Name4 Nachname4"}
];
// benutze
var csv = data.map(function(d){
return JSON.stringify(Object.values(d));
})
.join('\n')
.replace(/(^\[)|(\]$)/mg, '');