af6f434ec7ed68a084da92cb0e7ee9514081a549
[platform/framework/web/crosswalk-tizen.git] /
1 var forEach = require('../array/forEach');
2 var identity = require('../function/identity');
3 var 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