Javascript 可观测变换
我对可观察物很陌生,这对其他人来说可能是个愚蠢的问题,但我找不到一个方法来解决。我如何转换Javascript 可观测变换,javascript,typescript,rxjs,observable,Javascript,Typescript,Rxjs,Observable,我对可观察物很陌生,这对其他人来说可能是个愚蠢的问题,但我找不到一个方法来解决。我如何转换 Observable其中T是一个类型脚本类,其属性Id(string)为数组?我想将Id属性转换为字符串数组 您可以在javascript数组上使用类似的reduce操作符。RxJS reduce运算符将在完成时对整个流进行操作 请参见示例: let data$ = new Rx.Subject(); data$ .reduce((acc, el) => {acc.push(...el
Observable
其中T
是一个类型脚本类,其属性Id(string)
为数组
?我想将Id
属性转换为字符串数组 您可以在javascript数组上使用类似的reduce操作符。RxJS reduce运算符将在完成时对整个流进行操作
请参见示例:
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();
您在这里尝试做两件事:
T
T
的每个实例映射到Id
属性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'}
然后可以使用(与普通JS数组一样)提取Id
属性
const mapped = flattened.map(s => s.Id);
mapped.subscribe(s => console.log(s))
// => '1', '2', '3', '4'
把它全部放到一个语句中,然后
source
.mergeAll()
.map(s => s.Id)
.subscribe(s => console.log(s))
// => '1', '2', '3', '4'
你能看一下这个吗?你看了
地图
接线员了吗?@Aravind谢谢你的建议,但我不认为这回答了我的问题,尽管我从中得到了一些想法。是的。这就是为什么我让你参考那个答案。你能把代码更新到最新版本吗post@Hitmands是的,我目前正在研究map函数,但是这个概念是关于数组而不是可观察数组的,或者我完全忽略了一些东西。实现应该像map函数一样,我只是还不能理解它,因为我对它也是新手。纯c#dev在此之前:)