2016-10-18 160 views
0

似乎人們只有將觀察數組轉換爲數組的可觀察數纔會遇到困難 - 而不是相反。如何將數組的可觀察性轉化爲可觀察數組(RxJS)

因此,考慮到可觀察到的

Observable<Result[]> 

如何從

Observable<Result>[] to Observable<Result>[] 

問題來源於這樣的事實得到,我得到了一個可觀察的項目

items$: Observable<Item[]> 

Item: { 
    value: number, 
    ... 
}; 

其中value可以採取離散值,說

values = [1, 2, 3] 

我需要創建一個可觀察到的每個值,因爲每個饋送不同的組件。

所以我繼續做下面的映射

items$.map(items => values.map(value => 
    ({ value, items: items.filter(item => item.value === value) })) 

這將產生一個

Observable<{ value: number, items: Item[] }[]> 

然而,爲了給每個值分配給它的分量,我需要

Observable<{ value: number, items: Item[] }>[] 

我如何到達那裏?

+0

我很困惑什麼是 'Z' 和 'a'。 – martin

+0

對不起,我有一種很糟糕的感覺,轉述了這個問題,並希望它現在更有意義。 –

+0

如果你想讓一個Observable發出Observable,那很簡單。你想在我看來,你實際上需要從一個Observable中收集所有值到一個數組,當它完成時,你需要從每個數組項目中創建一個Observable。我對麼? – martin

回答

1

只是在你的代碼中的小變化:

values.map(value => 
    items$.map(items => 
    ({ value, items: items.filter(item => item.value === value) }) 
) 
) 

map運營商實際上創建了一個新的觀察到