UNPKG

764 BJavaScriptView Raw
1var forEach = require('../array/forEach');
2var identity = require('../function/identity');
3var makeIterator = require('../function/makeIterator_');
4
5 /**
6 * Bucket the array values.
7 */
8 function groupBy(arr, categorize, thisObj) {
9 if (categorize) {
10 categorize = makeIterator(categorize, thisObj);
11 } else {
12 // Default to identity function.
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