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