Ada dua pertanyaan di sini:
- Cara mengonversi array menjadi string csv
- Cara menyimpan string itu ke file
Semua jawaban untuk pertanyaan pertama (kecuali yang oleh Milimetri) di sini sepertinya berlebihan. Dan yang oleh Milimetri tidak mencakup persyaratan altrenatif, seperti string di sekelilingnya dengan tanda kutip atau mengubah susunan objek.
Inilah pendapat saya tentang ini:
Untuk csv sederhana satu peta () dan gabungan () sudah cukup:
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
Metode ini juga memungkinkan Anda untuk menentukan pemisah kolom selain koma di gabungan dalam. misalnya tab:d.join('\t')
Di sisi lain, jika Anda ingin melakukannya dengan benar dan menyertakan string dalam tanda kutip "", maka Anda dapat menggunakan beberapa sihir 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
jika Anda memiliki berbagai objek seperti:
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
. Namun, Anda dapat membuat tautan tersembunyi yang memilikidownload
atribut yang disetel ke nama file yang Anda inginkan. Kemudian "mengklik" tautan ini akan mengunduh file dengan nama yang Anda inginkan, saya akan menambahkannya ke jawaban saya.