Skip to content

Commit

Permalink
Create indexBy
Browse files Browse the repository at this point in the history
  • Loading branch information
Chalarangelo committed Jun 18, 2021
1 parent 38a4ede commit 82cdd26
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions snippets/indexBy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
title: indexBy
tags: array,object,intermediate
firstSeen: 2021-06-20T05:00:00-04:00
---

Creates an object from an array, using a function to map each value to a key.

- Use `Array.prototype.reduce()` to create an object from `arr`.
- Apply `fn` to each value of `arr` to produce a key and add the key-value pair to the object.

```js
const indexBy = (arr, fn) =>
arr.reduce((obj, v, i) => {
obj[fn(v, i, arr)] = v;
return obj;
}, {});
```

```js
indexBy([
{ id: 10, name: 'apple' },
{ id: 20, name: 'orange' }
], x => x.id);
// { '10': { id: 10, name: 'apple' }, '20': { id: 20, name: 'orange' } }
```

0 comments on commit 82cdd26

Please sign in to comment.