Skip to content

Instantly share code, notes, and snippets.

@jack-guy
Created March 10, 2019 03:14
Show Gist options
  • Save jack-guy/6483edeacb6c5fe80c24f33f802b149b to your computer and use it in GitHub Desktop.
Save jack-guy/6483edeacb6c5fe80c24f33f802b149b to your computer and use it in GitHub Desktop.
import { from, fromEvent, zip } from 'rxjs';
import { scan } from 'rxjs/operators';
const initialIceCreamFlavors = ['vanilla', 'chocolate', 'strawberry'];
const initialIceCreamPrices = ['$5.50', '$5.75', '$6.00'];
const iceCreamFormSubmit$ = fromEvent(formEl, 'submit');
const iceCreamFormFlavors$ = iceCreamFormSubmit$.pipe((map(({flavor}) => flavor)));
const iceCreamFormPrices$ = iceCreamFormSubmit$.pipe((map(({price}) => price)));
const iceCreamFlavors$ = iceCreamFormFlavors$.pipe(
scan((prev, flavor) => {
return [...prev, flavor];
}, initialIceCreamFlavors),
);
const iceCreamPrices$ = iceCreamFormPrices$.pipe(
scan((prev, price) => {
return [...prev, price];
}, initialIceCreamPrices),
);
const iceCreamFlavorToPrice$ = zip(
iceCreamFlavors$,
iceCreamPrices$,
).pipe(scan((prev, [flavor, price]) => {
return {
...prev,
[flavor]: price
};
}, {}));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment