从对象提取数据到字符串表

时间:2019-06-24 10:57:58

标签: javascript arrays node.js object

我有一个响应对象,看起来像这样:

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' }]
}

我想将此对象转换为此:

["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"]

我需要像这样转换它,因为我将在.csv文件中使用这些数据。 有人有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用Object.entriesObject.valuesmapjoin来放置一根长衬纸。这将适用于任何对象,但是将忽略其键:

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)

答案 1 :(得分:-2)

对于单个循环的,易于阅读的解决方案:

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 :(得分:-2)

使用Object.entries()方法。这就是你想要的。阅读文档。