RxJS proper way to merge 3 arrays into one, as an Observable -
hi have 3 subjects ( observables )
const arr1$ = new behaviorsubject([]) const arr2$ = new behaviorsubject([]) const arr3$ = new behaviorsubject([])
let's these subjects contain data
arr1 = ['1','2'], arr2 = ['3','7'], arr3 = ['4']
i want create observable (mergedobservable) combines latest these 3 observables, merges them 1 array, result 1 array this: ['1','2','3','7','4']
so can achieve this.mergedobservable.subscribe( mergedarray => { console.log(mergedarray) }) // ['1','2','3','7','4']
i struggling how make 'mergedobservable'. have tried combinelatest(arr1$,arr2$,arr3$) , still need 'chain' more functionality merge 3.
thanks!
combinelatest
takes optional project
function can used modify combined value.
you can specify project
function uses array.prototype.reduce
flatten arrays single array:
const arr1$ = new rx.behaviorsubject(['1','2']); const arr2$ = new rx.behaviorsubject(['3','7']); const arr3$ = new rx.behaviorsubject(['4']); rx.observable .combinelatest( arr1$, arr2$, arr3$, (...arrays) => arrays.reduce((acc, array) => [...acc, ...array], []) ) .subscribe(value => console.log(value));
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://unpkg.com/rxjs/bundles/rx.min.js"></script>
Comments
Post a Comment