Я пытаюсь загрузить некоторые данные в виде CSV, но получаю следующее в файле:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Я использую хранитель файлов
И вот как я это делаю:
const downloadFile = () => {
const formatCSVData = shipmentsCSV.shipments.map(data => ({
Courier: data.courierName,
Status: data.status.name,
}));
console.info('formatCSVData', JSON.stringify(formatCSVData, null, 2));
const blob = new Blob([formatCSVData], {
type: 'text/csv;charset=UTF-8',
});
saveAs(blob, 'CSV.txt');
};
Второй console.info записывает это (26 элементов, но я собираюсь упростить их до 4):
[
{
"Courier Name": "Hand Delivery",
"Status": "Received"
},
{
"Courier Name": null,
"Status": "Pending"
},
{
"Courier Name": null,
"Status": "Canceled"
},
{
"Courier Name": "FedEx",
"Status": "Canceled"
}
...
]
Итак, как мне правильно распечатать данные в файле CSV?
Возможный дубликат Как преобразовать JSON в формат CSV и сохранить в переменной



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте это решение:
Как преобразовать JSON в формат CSV и сохранить в переменной
function ConvertToCSV(objArray) {
var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
var str = '';
for (var i = 0; i < array.length; i++) {
var line = '';
for (var index in array[i]) {
if (line != '') line += ','
line += array[i][index];
}
str += line + '\r\n';
}
return str;
}
И ваш код будет:
const downloadFile = () => {
const shipments = shipmentsCSV.shipments.map(data => ({
Courier: data.courierName,
Status: data.status.name,
}));
const formatCSVData = ConvertToCSV(shipments);
console.info('formatCSVData', JSON.stringify(formatCSVData, null, 2));
const blob = new Blob([formatCSVData], {
type: 'text/csv;charset=UTF-8',
});
saveAs(blob, 'CSV.txt');
};
CSV - это набор строк, каждая из которых содержит строки, разделенные запятыми. Нигде вы не вставляете запятые или символы новой строки. В основном вам понадобится что-то вроде
data.map(obj => obj.join(",")).join("\n"), при условии, чтоdataпредставляет собой массив массивов.