18 lines
767 B
Markdown
18 lines
767 B
Markdown
### 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 store 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), {})
|
|
))();
|
|
```
|
|
|
|
```js
|
|
const squareIt = arr => mapObject(arr, a => a * a);
|
|
squareIt([1, 2, 3]); // { 1: 1, 2: 4, 3: 9 }
|
|
```
|