47906be6d657ca1bc47bb3d954e29912f3cb1636
[platform/framework/web/crosswalk-tizen.git] /
1 define([
2     '../array/forEach',
3     '../function/identity',
4     '../function/makeIterator_'
5 ], function(forEach, identity, makeIterator) {
6
7     /**
8      * Bucket the array values.
9      */
10     function groupBy(arr, categorize, thisObj) {
11         if (categorize) {
12             categorize = makeIterator(categorize, thisObj);
13         } else {
14             // Default to identity function.
15             categorize = identity;
16         }
17
18         var buckets = {};
19         forEach(arr, function(element) {
20             var bucket = categorize(element);
21             if (!(bucket in buckets)) {
22                 buckets[bucket] = [];
23             }
24
25             buckets[bucket].push(element);
26         });
27
28         return buckets;
29     }
30
31     return groupBy;
32 });