1 | var forEach = require('../array/forEach');
|
2 | var identity = require('../function/identity');
|
3 | var makeIterator = require('../function/makeIterator_');
|
4 |
|
5 | |
6 |
|
7 |
|
8 | function groupBy(arr, categorize, thisObj) {
|
9 | if (categorize) {
|
10 | categorize = makeIterator(categorize, thisObj);
|
11 | } else {
|
12 |
|
13 | categorize = identity;
|
14 | }
|
15 |
|
16 | var buckets = {};
|
17 | forEach(arr, function(element) {
|
18 | var bucket = categorize(element);
|
19 | if (!(bucket in buckets)) {
|
20 | buckets[bucket] = [];
|
21 | }
|
22 |
|
23 | buckets[bucket].push(element);
|
24 | });
|
25 |
|
26 | return buckets;
|
27 | }
|
28 |
|
29 | module.exports = groupBy;
|
30 |
|