У меня есть объект, и я хотел бы поместить элементы этого объекта в файл CSV, однако, когда я пытаюсь получить ключ объекта, он возвращает ошибку типа: Uncaught TypeError: Cannot преобразовать undefined или null в объект.
Когда я консоль регистрирую объект, он фактически показывает все элементы, но по какой-то причине я не могу получить ключ и значения обратно.
Вот как я консольно зарегистрировал объект: console.log(JSON.stringify(records));
И вот что я получаю обратно: {"id":"5e7b389911c2125dfaf2b5f2","title":"Example Application Number 1","status":"Ready For Submission","principalInvestigator":"Mr. Harry Styles","coInvestigators":["Niall Horan, Liam Payne, Zayn Malik, Louis Tomilson"],"partners":null,"funder":"Innovate UK","researchGroup":"AHIVES","scheme":"GCRF","requestedAmount":null,"estimatedAmount":1234,"submissionDate":"2020-03-23T00:00:00.000+01:00","startDate":"2020-03-29T00:00:00.000+01:00","estimatedDuration":null,"endDate":null,"facility":null,"comments":null,"dateCreated":"2020-03-25T11:55:21.902+01:00","lastUpdated":"2020-03-25T11:55:21.902+01:00","dateDeleted":null}
Вот полная js функция:
window.downloadCsv = function(records) {
console.log(JSON.stringify(records));
// Use first element to choose the keys and the order
let keys = Object.keys(records[0]);
// Build header
let result = keys.join("\t") + "\n";
// Add the rows
records.forEach(function(obj){
result += keys.map(k => obj[k]).join("\t") + "\n";
});
return result;
Вот как я анализирую объект на js из тимьяна:
<button title="Downloads the data from the query into a CSV"
class="inline-flex items-center bg-red-600 text-white font-bold px-4 py-1
rounded shadow hover:bg-red-500"
type="submit"
th:onclick="downloadCsv(/*[[${record}]]*/)">
<span>Download</span>
<svg class="fill-current w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<path d="M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z" /></svg>
</button>