Hier gibt es zwei Fragen:
- So konvertieren Sie ein Array in eine CSV-Zeichenfolge
- So speichern Sie diese Zeichenfolge in einer Datei
Alle Antworten auf die erste Frage (außer der von Milimetric) scheinen hier ein Overkill zu sein. Und die von Milimetric deckt keine altrenativen Anforderungen ab, wie das Umgeben von Zeichenfolgen mit Anführungszeichen oder das Konvertieren von Arrays von Objekten.
Hier sind meine Ansichten dazu:
Für eine einfache CSV reichen eine Map () und ein Join () aus:
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
Mit dieser Methode können Sie auch ein anderes Spaltentrennzeichen als ein Komma im inneren Join angeben. Zum Beispiel eine Registerkarte:d.join('\t')
Auf der anderen Seite können Sie JSON-Magie verwenden, wenn Sie es richtig machen und Zeichenfolgen in Anführungszeichen "" einschließen möchten:
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
Wenn Sie eine Reihe von Objekten haben wie:
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
. Sie können jedoch einen versteckten Link erstellen, dessendownload
Attribut auf den gewünschten Dateinamen festgelegt ist. Wenn Sie dann auf diesen Link klicken, wird die Datei in dem von Ihnen gewünschten Namen heruntergeladen. Ich werde sie meiner Antwort hinzufügen.