Có hai câu hỏi ở đây:
- Cách chuyển đổi một mảng thành chuỗi csv
- Cách lưu chuỗi đó vào một tệp
Tất cả các câu trả lời cho câu hỏi đầu tiên (ngoại trừ câu hỏi của Milimetric) ở đây có vẻ như quá mức cần thiết. Và một bởi Milimetric không bao gồm các yêu cầu về độ cao, như các chuỗi xung quanh có dấu ngoặc kép hoặc chuyển đổi các mảng của các đối tượng.
Dưới đây là của tôi về điều này:
Đối với một csv đơn giản, một bản đồ () và tham gia () là đủ:
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
Phương pháp này cũng cho phép bạn chỉ định dấu tách cột khác với dấu phẩy trong phép nối bên trong. ví dụ: một tab:d.join('\t')
Mặt khác, nếu bạn muốn thực hiện đúng cách và gửi các chuỗi trong dấu ngoặc kép "", thì bạn có thể sử dụng một số phép thuật 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
nếu bạn có mảng các đối tượng như:
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
. Tuy nhiên, bạn có thể tạo một liên kết ẩn códownload
thuộc tính được đặt thành tên tệp bạn muốn. Sau đó "nhấp" liên kết này sẽ tải xuống tệp theo tên bạn mong muốn, tôi sẽ thêm nó vào câu trả lời của mình.