console.log(conditionalReduce('dog',{dog:()=>'Dogs are great pets',cat:()=>'Cat\'s are also great'}));// Prints "Dogs are great pets"
I realized, thanks to @john_papa
's post below, that this approach also allows us to return a value in the process, so we can inline it in other expressions (or React's JSX)!
You could also consider having the function conditionalReduce curried and pass the dictionary as the first argument, to make it easier to reuse.
constpetReducer=conditionalReduce({dog:()=>'Dogs are great pets',cat:()=>'Cats are also great'})console.log(petReducer('dog'))// 'Dogs are great pets'console.log(petReducer('cat'))// 'Cats are also great'
Also a great idea. I added a new helper so that folks can do either. Thanks again, this makes things cleaner!
const{curry}=require('conditional-reduce');constdogReducer=curry({dog:()=>'Dogs are great pets',cat:()=>'Cat\'s are also great'});console.log(dogReducer('dog'));// Prints "Dogs are great pets"console.log(dogReducer('bird'));// Throws 'Invalid conditional value "bird"' exception
const{reduce}=require('conditional-reduce');console.log(reduce('dog',{dog:()=>'Dogs are great pets',cat:()=>'Cat\'s are also great'}));// Prints "Dogs are great pets"console.log(reduce('bird',{dog:()=>'Dogs are great pets',cat:()=>'Cat\'s are also great'}));// Throws 'Invalid conditional value "bird"' exception
Oh cool, I’ve never seen this approach before! Gonna noodle on this one cause I’ve got a feeling there’s a tiny helper library in here waiting to be built to make the missing handler logic even more elegant and baked in. Thank you for sharing.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I usually don't use switch statements at all, I prefer a having a dictionary object with a handler function for each case.
Maybe it's just an idiom I brought from Python, but I think it's more natural to compose functions with this pattern than with switch statements.
I also prefer thing method,
I created a little module based on this conversation, and of course gave you a shout-out in the README :D
It's at npmjs.com/package/conditional-reduce
Code looks like this:
I realized, thanks to @john_papa 's post below, that this approach also allows us to return a value in the process, so we can inline it in other expressions (or React's JSX)!
Wow, that went quick :D
You could also consider having the function
conditionalReduce
curried and pass the dictionary as the first argument, to make it easier to reuse.Also a great idea. I added a new helper so that folks can do either. Thanks again, this makes things cleaner!
Oh cool, I’ve never seen this approach before! Gonna noodle on this one cause I’ve got a feeling there’s a tiny helper library in here waiting to be built to make the missing handler logic even more elegant and baked in. Thank you for sharing.