From 42bff6deb60f13e91c140e31ede53c2f89767aa3 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Mon, 18 Dec 2017 12:11:58 +0200 Subject: [PATCH] Update and rename sqaure_it.md to mapObject.md --- snippets/mapObject.md | 14 ++++++++++++++ snippets/sqaure_it.md | 11 ----------- 2 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 snippets/mapObject.md delete mode 100644 snippets/sqaure_it.md diff --git a/snippets/mapObject.md b/snippets/mapObject.md new file mode 100644 index 000000000..102795a73 --- /dev/null +++ b/snippets/mapObject.md @@ -0,0 +1,14 @@ +### mapObject + +Maps the values of an array to an object using a function, where the key-value pairs consist of the original value as the key and the mapped value. + +Use an anonymous inner function scope to declare an undefined memory space, using closures to store a return value. Use a new `Array` to stor the array with a map of the function over its data set and a comma operator to return a second step, without needing to move from one context to another (due to closures and order of operations). + +```js +const mapObject = (arr, fn) => + (a => (a = [arr, arr.map(fn)], a[0].reduce( (acc,val,ind) => (acc[val] = a[1][ind], acc), {}) )) ( ); +/* +const squareIt = arr => mapObject(arr, a => a*a) +squareIt([1,2,3]) // { 1: 1, 2: 4, 3: 9 } +*/ +``` diff --git a/snippets/sqaure_it.md b/snippets/sqaure_it.md deleted file mode 100644 index eed3eb137..000000000 --- a/snippets/sqaure_it.md +++ /dev/null @@ -1,11 +0,0 @@ -### Square The Data - -Using an anonymous inner function scope we declare an undefined memory space using closures for storing a return value. We then use a new Array to store the array with a map of the function over it's data set and a comma operator to return a second step without needing to move from one context to another thank to closures and order of operations. - -Notice the need to declare an order of operations(parenthesis) around the anonymous inner function so we can call it immediately. - -```js -const mapObject = (arr, fn) => (a => (a = [arr, arr.map(fn)], a[0].reduce( (acc,val,ind) => (acc[val] = a[1][ind], acc), {}) )) ( ) -const squareIt = arr => mapObject(arr, a => a*a) -squareIt([1,2,3]) // { 1: 1, 2: 4, 3: 9 } -```