diff --git a/README.md b/README.md index ccf3db9f7..68211d6e8 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,9 @@ * [`UUIDGenerator`](#uuidgenerator) * [`validateNumber`](#validatenumber) +### _Uncategorized_ +* [`flip`](#flip) + ## Adapter ### spreadOver @@ -2203,6 +2206,28 @@ const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == // validateNumber('10') -> true ``` +[⬆ back to top](#table-of-contents) +## _Uncategorized_ + +### flip + +Flip takes a function as an argument, then makes the first argument the last + +Return a closure that takes variadic inputs, and splices the last argument to make it the first argument before applying the rest. + +```js +const flip = fn => (...args) => fn(args.pop(), ...args) +/* +let a = {name: 'John Smith'} +let b = {} +const mergeFrom = flip(Object.assign) +let mergePerson = mergeFrom.bind(a) +mergePerson(b) // == b +b = {} +Object.assign(b, a) // == b +*/ +``` + [⬆ back to top](#table-of-contents) ## Credits diff --git a/docs/index.html b/docs/index.html index d645313ac..734b92754 100644 --- a/docs/index.html +++ b/docs/index.html @@ -190,6 +190,9 @@ UUIDGenerator validateNumber +

Uncategorized +

flip +
 

Adapter

spreadOver

Takes a veriadic function and returns a closure that accepts an array of arguments to map to the inputs of the function.

@@ -1340,6 +1343,21 @@ Use Number() to check if the coercion holds.

const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;
 // validateNumber('10') -> true
 
+

Uncategorized

+

flip

+

Flip takes a function as an argument, then makes the first argument the last

+

Return a closure that takes variadic inputs, and splices the last argument to make it the first argument before applying the rest.

+
const flip = fn => (...args) => fn(args.pop(), ...args)
+/*
+let a = {name: 'John Smith'}
+let b = {}
+const mergeFrom = flip(Object.assign)
+let mergePerson = mergeFrom.bind(a)
+mergePerson(b) // == b
+b = {}
+Object.assign(b, a) // == b
+*/
+