Suponiendo que tengo un flujo fuente de objetos de la siguiente manera:
source$ = from([{ id: 1, cost: 10},{ id: 2, cost: 5},{ id: 3, cost: 3},{ id: 4, cost: 10}])En el observable derivado me gustaría mantener una propiedad adicional con una suma corriente del costo
// Expected derived stream { id: 1, cost: 10, totalCost: 10} { id: 2, cost: 5, totalCost: 15} { id: 3, cost: 3, totalCost: 18} { id: 4, cost: 10, totalCost: 28}¿Cómo podría lograrse con rxjs?
Me las arreglé para encontrar esta solución:
import { from } from "rxjs"; import {scan} from "rxjs/internal/operators"; let source$ = from([{ id: 1, cost: 10},{ id: 2, cost: 5},{ id: 3, cost: 3},{ id: 4, cost: 10}]); source$ .pipe( scan((acc,curr) => { return {...curr, totalCost: acc.totalCost + curr.cost} }, {totalCost:0}) ) .subscribe(console.log)