javascript - 如何将 firestore 集合转换为有用的对象

标签 javascript arrays object google-cloud-firestore mapping

我在 firestore 中有一组货币,称为“货币”。该集合包含以货币命名的文档(例如“欧元”、“美元”等)。

我正在查询集合并接收集合中所有文档的数组,如下所示:

[{euro:{dollar: 2}},
{dollar:{euro: 0.5}}]

我想将其转换为一个以文档 id 作为对象键的对象,如下所示:

{{euro:{dollar: 2}},
{dollar:{euro: 0.5}}}

这样我就可以访问 Object.keys(obj) 来访问所有可用的货币,如下所示:

console.log(Object.keys(obj)) ---> [euro], [dollar]

这对我来说似乎非常简单,但我正在努力如何实现这一点,因为我不明白 array.map、array.foreach array.reduce、Object.assign 等之间的区别。

我应该使用哪一个,哪一个是最优雅的(阅读:最短的)?

最佳答案

您可以在 reduce() 中使用对象解构或 Object.assign()

const data = [{euro:{dollar: 2}},{dollar:{euro: 0.5}}]

const res = data.reduce((a, c) => ({...a, ...c}), {});
// or res = data.reduce((a, c) => Object.assign(a, c), {});   

console.log(res)

关于javascript - 如何将 firestore 集合转换为有用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55603309/

相关文章:

c++ - C++ 类是否具有默认构造函数以及在以下情况下调用哪些构造函数?

javascript - jQuery ajax 请求有效,相同的 AngularJS ajax 请求无效

javascript - jQuery 列表,样式 <li> 字段

php - 在 PHP 中创建包含 $x 元素的数组

c - C语言中 'objects'是什么意思?

javascript - HTML 元素对象与对象

javascript - 如何从 php 函数引用 .js 文件?

javascript - 数组 is.Array if 和 else 语句

javascript - Node.js 使用 readline 填充数组并使用

c# - 在 C# 中有效缩小二维数组