function map(compare, say, next = v => v) { return function(value) { return [() => say, next][Math.sign(compare(value))](value) } } const process = map( v => (v % 3) + (v % 5), "fizzbuzz", map(v => v % 5, "buzz", map(v => v % 3, "fizz")) ) for (let i = 1; i < 31; i++) { console.log(process(i)) }
Well done! Clever use of Math.sign to select either the first or second element from an array
Math.sign
Slightly shorter without bothering to call out for variable potential conditions and using anons:
let map = (compare, say, next = v => v) => v => [() => say, next][Math.sign(v % compare)](v) const process = map(15, "FizzBuzz", map(5, "Buzz", map(3, "Fizz")))
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
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.
Well done! Clever use of
Math.sign
to select either the first or second element from an arraySlightly shorter without bothering to call out for variable potential conditions and using anons: