【发布时间】:2022-01-20 16:30:58
【问题描述】:
我的 promise 返回一个像这样的 JSON:
‘[ {"amazing data": "hello", "amazing again": "yep"}, {"amazing data": "hello", "amazing again": "yep"}]’
我只想返回一个对象数组:
[
{"amazing data": "hello", "amazing again": "yep"},
{"amazing data": "hello", "amazing again": "yep"}
]
我想以这种方式访问它,因为我可以在 promise 返回后使用 reduce。
我的代码:
const amazingPromise = await getData().then((data) => {
return data
})
const prodArray = Array.from(amazingPromise.reduce((acc, o) => {
Object.entries(o)
.forEach(([k, v]) => {
if(!acc.has(k)) acc.set(k, [k])
acc.get(k).push(Array.isArray(v) ? v.join(' | ') : v)
})
return acc
}, new Map()).values())
任何帮助都会很棒。谢谢。
【问题讨论】:
-
为什么你的 promise 返回的是一串东西而不是实际有效的 JSON?您的输出也无效。
-
读取字符串,检测
}并将其附加到您的数组中..等等,直到您完成读取字符串,然后您可以将json对象解析为测试 -
我编辑了这个问题。承诺返回一个 JSON 有效的 obj。
-
这不是有效的 JSON。 JSON 要求所有字符串都用双引号引起来,包括对象键。
-
如果你复制错了,而且它是真正有效的 JSON,请使用
JSON.parse()。
标签: javascript arrays promise