我在我的Angular2应用程序中使用Firebase从我的数据库检索数据。在嵌套的标签列表中返回一个唯一值数组最简单的方法是什么?即在我的示例中,我想返回["Sport", "Adventure", "Music"]
,其中第二个“冒险”被省略。在Angular2中展开可观察数组
{
"images": {
"image1": {
"path": "path",
"date": 43534532123,
"tags": {
0: "Sport",
1: "Adventure"
}
},
"image2": {
"path": "path",
"date": 43534532123,
"tags": {
0: "Music",
1: "Adventure"
}
}
}
我试过这种方法,但它似乎分裂从第一图像元素只有
return this.af.database.list('/photos/user')
.map(photos => photos.map(photo => photo.tags))
.concatAll()
.distinct()
但是,这种方法产生正确的输出,但作为唯一标签的独立的流而不是作为一个阵列
return this.af.database.list('/photos/user')
.map(photos => photos.map(photo => photo.tags))
.mergeAll()
.mergeAll()
.distinct()
我的坏,它应该是图像1和图像2 – user3642173
说实话,你可能甚至不需要任何特殊的观察到魔术这个......你的'map'功能正好可以将对象从API和将其减少到该阵列中。所有的逻辑都可以在'map'回调中进行。 Observable自己的操作符更是*操纵数据流,而不是流*中的数据。细微的差异,但重要。这就是为什么我认为这是在'map'的回调之内,你可以简单地处理数据。你不需要“独特”排放,你需要改变实际数据。 – aaronofleonard
请提高问题的质量,澄清可观察的'this.af.database.list('/ photos/user')'的结构。定义类型和成员。 –