我对可观察对象很陌生,对其他人来说这可能是一个愚蠢的问题,但我找不到一种方法来做到这一点。如何将 Observable<Array<T>>
其中T
是TypeScript类,并将属性Id(string)
转换为Array<string>
?我想将Id
属性转换为字符串数组。可观察到的转换
Q
可观察到的转换
3
A
回答
1
您正试图在这里做两件事情:
- 拼合从源阵列中的所有阵列整合到单一可观察的
T
- 地图的每个实例
T
至Id
财产
您可以使用mergeAll
来展平观测值,就像在普通JS阵列上使用reduce
一样。
const source = Rx.Observable.of(
[{ Id: '1' }, { Id: '2' }],
[{ Id: '3' }, { Id: '4' }]
);
const flattened = source.mergeAll();
flattened.subscribe(s => console.log(s));
// => {Id:'1'}, {Id:'2'}, {Id:'3'}, {Id:'4'}
然后,您可以使用map
(与正常JS数组)到Id
财产
const mapped = flattened.map(s => s.Id);
mapped.subscribe(s => console.log(s))
// => '1', '2', '3', '4'
它全部拉入1个语句和...
source
.mergeAll()
.map(s => s.Id)
.subscribe(s => console.log(s))
// => '1', '2', '3', '4'
0
您可以使用像javascript数组上的reduce操作符。 RxJS减少操作员在完成时将对整个流进行操作。
见例如:
let data$ = new Rx.Subject();
data$
.reduce((acc, el) => {acc.push(...el); return acc;}, [])
.subscribe(x=>console.log(x));
data$.next([{id:'1'}, {id:'2'}]);
data$.next([{id:'3'}, {id:'4'}]);
data$.complete();
相关问题
- 1. 可观察 - 将2个承诺转换为可观察到的
- 2. 转换可观察到阵角4 HTTP
- 3. 如何将可观察流转换为可观察数组
- 4. 转换观察到在Firebase中观察SingleSvent时出错
- 5. knockoutJS JSON没有转换为可观察
- 6. 过滤器可观察到的由可观察到的
- 7. RXJS如何可观察<T[]>转换为可观察<T>
- 8. 可观察到流
- 9. 转换数组可观察到的阵列
- 10. knockoutjs - 可观察到的可观察值的对象的observableArray
- 11. 可观察到的序列
- 12. 当观察者的观察者的寿命长于可观察到的
- 13. RxJS 5,转换可观察到一个BehaviorSubject(?)
- 14. 改造2 RxJaxa 1可观察:如何转换到RxJava 2
- 15. 转化观察到变量
- 16. 观察员可以观察多个可观察物吗?
- 17. Java观察者和可观察的
- 18. 如何观察转换的集合?
- 19. 可观察得到加倍
- 20. Angular Http得到可观察
- 21. 简单的观察到/观察员rxjs
- 22. 转换回调将被调用无限的次数可观察
- 23. Angular 4 - 将事件转换为可观察的流
- 24. 将ArrayList转换为JavaFX程序的可观察列表?
- 25. 将Knockout js json转换为可观察的
- 26. 如何将承诺转换为可观察的?
- 27. 将大量的可观察数据汇总到新的可观察数据中
- 28. 可观察<{}>不可分配到类型可观察<SomeType[]>
- 29. 提供的参数从可观察到返回一个可观察
- 30. KnockoutJS可观察对象的可观察对象
提取你能参考这个[**答案**](https://stackoverflow.com/questions/44467336/how-can-i-get-an-observer-of-an-input-value-in-child-component/44467942 #44467942) – Aravind
你看过“map”操作吗要么? – Hitmands
@Aravind谢谢你的建议,但我不认为这回答我的问题,尽管我从中得到了一些想法。 – user2278488