2016-10-18 79 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运营商实际上创建了一个新的观察到