Tengo un objeto como este:-
{ "SUCCESS": [ "apple", "orange", "grapes" ], "FAILED": ["kiwi"], "NOPE": ["peach"] }Quiero tener un CSV de la siguiente manera: -
apple SUCCESS orange SUCCESS grapes SUCCESS kiwi FAILED peach NOPEDescubrí este fragmento de código pero no pude iterar sobre esto: -
const downLoadCsv = (key, items) => { let csvContent = ''; if (!items.length) { return; } items.forEach((item) => { csvContent += `${item},`; csvContent += '\n'; }); const anchorEle = document.createElement('a'); anchorEle.href = `data:text/csv;charset=utf-8,${encodeURI(csvContent)}`; anchorEle.target = '_blank'; anchorEle.download = `${key}.csv`; anchorEle.click(); };Bueno, el punto aquí es que, como escribiste, items no son una matriz, sino un objeto.
Lo que debe hacer es iterar ambas claves de items y la lista de elementos para cada clave, por lo que:
const downLoadCsv = (key, items) => { let csvContent = ''; Object.keys(items).forEach(status => { items[status].forEach(fruit => { csvContent += `${fruit},${status}\n`; }) }); if (csvContent !== '') { const anchorEle = document.createElement('a'); anchorEle.href = `data:text/csv;charset=utf-8,${encodeURI(csvContent)}`; anchorEle.target = '_blank'; anchorEle.download = `${key}.csv`; anchorEle.click(); } };