Best way to "flatten" an array inside an RxJS Observable Best way to "flatten" an array inside an RxJS Observable angular angular

Best way to "flatten" an array inside an RxJS Observable


You can use concatAll() or mergeAll() without any parameter.

dataFromBackend.pipe(  tap(items => console.log(items)),  mergeAll(), // or concatAll())

This (including mergeMap) works only in RxJS 5 because it treats Observables, arrays, array-like objects, Promises, etc. the same way.

Eventually you could do also:

mergeMap(val => from(val).pipe(  tap(item => console.log(item)),  map(item => item.name),)),toArray(),

Jan 2019: Updated for RxJS 6


Actually if you need it inside the stream just use this:

.flatMap(items => of(...items))


Angular 6 note.

If you are using as a pipeable operator, do is known as tap!

https://www.learnrxjs.io/operators/utility/do.htmlHere is an example.

// RxJS import { tap, map, of, mergeMap} from 'rxjs/operators';backendSource  .pipe(   tap(items => console.log(items)),   mergeMap(item => item ),   map(item => console.log(item.property))  );