我对 Observables 很陌生,这对其他人来说可能是个愚蠢的问题,但我找不到解决方法。我如何转换
Observable<Array<T>>
其中 T
是一个带有属性 Id(string)
的 TypeScript 类进入 Array<string>
?我想转换 Id
属性转换为字符串数组。
最佳答案
你想在这里做两件事:
- 将源数组中的所有数组展平为
T
的单个可观察对象 - 将
T
的每个实例映射到Id
属性
您可以使用 mergeAll
像在普通 JS 数组上使用 reduce
一样展平 observable。
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'
关于javascript - 可观察的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45507888/