add _.oneArg (and maybe _.twoArgs and _.limitArgs)
I suggest adding a new function called oneArg to underscore. It wraps a function and allows it to be called with one argument only and ignores rest of the arguments.
Implementation:
const oneArg = fn => arg => fn(arg);
usage:
Before oneArg:
['34','11','19','199','201'].map(parseInt); // returns [34, NaN, 1, 1, 33]
After oneArg:
const safeParseInt = oneArg(parseInt); ['34','11','19','199','201'].map(safeParseInt) // returns [34, 11, 19, 199, 201]
Thanks for the suggestion, @sktguha! It is an interesting idea. I'm cross-posting this to our companion project, Underscore-contrib, because I think it should be added there first before we consider making it part of the core library.
In the meanwhile, your particular use case can also be handled using _.partial:
import _, { partial } from 'underscore';
const safeParseInt = partial(parseInt, _, undefined);
You would be right to point out, though, that partial cannot handle variadic functions while oneArg can, so there is definitely an added value here.
Thanks for the reply . Interestingly it is available as unary in lodash. https://bit.dev/lodash/lodash/unary