0

I have a response object, which looks like this:

const response = {
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\compressed.jpg': [{ name: 'bear', confidence: '99.21' }],
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\large.jpg': [{ name: 'bear', confidence: '98.29' }],
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\small.jpg': [{ name: 'bear', confidence: '99.42' }]
}

I want to convert this object to this:

["G:\\magisterka\\master-project\\animals\\bear\\with\\4\\compressed.jpg, bear, 99.25", "G:\\magisterka\\master-project\\animals\\bear\\with\\4\\large.jpg, bear, 98.29",
"G:\\magisterka\\master-project\\animals\\bear\\with\\4\\small.jpg, bear, 99.42"]

I need to convert it like this because I will use this data in a .csv file. Anyone have any ideas?

Kobe
  • 6,226
  • 1
  • 14
  • 35
dawid1895
  • 23
  • 5

2 Answers2

1

You can use Object.entries, Object.values, map & join, for a long one liner. This will work for any object, but it will disregard its keys:

const response = {
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\compressed.jpg': [{ name: 'bear', confidence: '99.21' }],
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\large.jpg': [{ name: 'bear', confidence: '98.29' }],
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\small.jpg': [{ name: 'bear', confidence: '99.42' }]
}

const csv = Object.entries(response).map(([k, v]) => [k, ...Object.values(v[0])].join(', '))

console.log(csv)
Kobe
  • 6,226
  • 1
  • 14
  • 35
-2

For a single looped, easily read solution:

const response = {
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\compressed.jpg': [{ name: 'bear', confidence: '99.21' }],
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\large.jpg': [{ name: 'bear', confidence: '98.29' }],
    'G:\\magisterka\\master-project\\animals\\bear\\with\\4\\small.jpg': [{ name: 'bear', confidence: '99.42' }]
}

const parsed = Object.keys(response).map(key => {
  const val = response[key][0]
  return `${key}, ${val.name}, ${val.confidence}`
})

console.log(parsed)
  • 2
    While this code may answer the question, providing additional context regarding how this code answers the question improves its long-term value. – frobinsonj Jun 24 '19 at 11:01