2016-10-18 2 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

Я очень смущен, что «г» и «а». – martin

+0

Извините, у меня было ощущение, что это было плохо сформулировано, перефразировал вопрос и надеюсь, что теперь это имеет больше смысла. –

+0

Если вы хотите сделать Observable, который испускает Observable, это будет легко. То, что вы хотите, похоже на то, что вам действительно нужно собрать все значения из Observable в массив, и когда он завершится, вам нужно сделать Observable из каждого элемента массива. Я прав? – martin

ответ

1

Просто небольшое изменение в коде:

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

map оператор фактически создает новый наблюдаемую

Смежные вопросы