Files
30-seconds-of-code/snippets/group-by
Elder Henrique Souza e8d9acae9a group by
Tried to reproduce the groupBy behaviour from the lodash lib.
https://lodash.com/docs/4.17.4#groupBy
2017-12-13 18:49:12 -02:00

17 lines
694 B
Plaintext

### Group by
Passing an array of values, a function or a property name thats going to be run against each value in the array,
returns an object where the keys are the mapped results and the values is an array of the original values that generated the same results.
```js
const groupBy = (values, fn) => {
return (typeof fn === 'function' ? values.map(fn) : values.map((val) => val[fn]))
.reduce((acc, val, i) => {
acc[val] = acc[val] === undefined ? [values[i]] : acc[val].concat(values[i]);
return acc;
}, {});
}
// groupBy([6.1, 4.2, 6.3], Math.floor) -> {4: [4.2], 6: [6.1, 6.3]}
// groupBy(['one', 'two', 'three'], 'length') -> {3: ['one', 'two'], 5: ['three']}
```