Is there a way of providing a final transform method when chaining operations (like map reduce) in underscore.js?

Posted by latentflip on Stack Overflow See other posts from Stack Overflow or by latentflip
Published on 2012-03-28T13:49:13Z Indexed on 2012/03/28 23:28 UTC
Read the original article Hit count: 177

(Really strugging to title this question, so if anyone has suggestions feel free.)

Say I wanted to do an operation like:

  • take an array [1,2,3]
  • multiply each element by 2 (map): [2,4,6]
  • add the elements together (reduce): 12
  • multiply the result by 10: 120

I can do this pretty cleanly in underscore using chaining, like so:

arr = [1,2,3]
map = (el) -> 2*el
reduce = (s,n) -> s+n
out = (r) -> 10*r

reduced = _.chain(arr).map(map).reduce(reduce).value()
result = out(reduced)

However, it would be even nicer if I could chain the 'out' method too, like this:

result = _.chain(arr).map(map).reduce(reduce).out(out).value()

Now this would be a fairly simple addition to a library like underscore. But my questions are:

  • Does this 'out' method have a name in functional programming?
  • Does this already exist in underscore (tap comes close, but not quite).

© Stack Overflow or respective owner

Related posts about functional-programming

Related posts about underscore.js