The Wayback Machine - https://web.archive.org/web/20170626181738/https://github.com/lodash/lodash/blob/master/overArgs.js
Skip to content
Permalink
Fetching contributors…
Cannot retrieve contributors at this time
42 lines (39 sloc) 890 Bytes
/**
* Creates a function that invokes `func` with its arguments transformed.
*
* @since 4.0.0
* @category Function
* @param {Function} func The function to wrap.
* @param {Function[]} [transforms=[identity]]
* The argument transforms.
* @returns {Function} Returns the new function.
* @example
*
* function doubled(n) {
* return n * 2
* }
*
* function square(n) {
* return n * n
* }
*
* const func = overArgs((x, y) => [x, y], [square, doubled])
*
* func(9, 3)
* // => [81, 6]
*
* func(10, 5)
* // => [100, 10]
*/
function overArgs(func, transforms) {
const funcsLength = transforms.length
return function(...args) {
let index = -1
const length = Math.min(args.length, funcsLength)
while (++index < length) {
args[index] = transforms[index].call(this, args[index])
}
return func.apply(this, args)
}
}
export default overArgs
You can't perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.