私はAngular2アプリケーションでFirebaseを使用してデータベースからデータを取得しています。入れ子になったタグのリストにユニークな値の配列を返すのが一番簡単ですか?私。私の例では、["Sport", "Adventure", "Music"]
の2番目の「アドベンチャー」が返されます。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()
から要素を分割するようだしかし、このアプローチは、正しい出力が得られるが、ユニークなタグの別の流れとしての代わりとして1つの配列
return this.af.database.list('/photos/user')
.map(photos => photos.map(photo => photo.tags))
.mergeAll()
.mergeAll()
.distinct()
私の悪い、それは正直に言うと画像1と画像2 – user3642173
されている必要がありますあなたはおそらくも、この...あなたの 'map'機能のための特別な観察可能な魔法がちょうどAPIからオブジェクトを取ることができます必要はありませんし、それをその配列に減らしてください。そのためのすべてのロジックは 'map'コールバックの中に入ることができます。観測可能なもの自体は、ストリームのデータではなく、データのストリームを操作するための操作です。微妙な違いですが、重要です。だからこそ、単にデータを処理できるのは 'map'のコールバックの中にあると思います。あなたは '明確な排出物を必要としません、あなたは変更するために実際のデータが必要です。 – aaronofleonard
質問の質を向上させるには、観測可能な 'this.af.database.list( '/ photos/user')'の構造を明確にしてください。タイプとメンバを定義します。 –