| 'use strict'; | 
| var bind = require('../internals/function-bind-context'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var IndexedObject = require('../internals/indexed-object'); | 
| var toObject = require('../internals/to-object'); | 
| var lengthOfArrayLike = require('../internals/length-of-array-like'); | 
| var MapHelpers = require('../internals/map-helpers'); | 
|   | 
| var Map = MapHelpers.Map; | 
| var mapGet = MapHelpers.get; | 
| var mapHas = MapHelpers.has; | 
| var mapSet = MapHelpers.set; | 
| var push = uncurryThis([].push); | 
|   | 
| // `Array.prototype.groupToMap` method | 
| // https://github.com/tc39/proposal-array-grouping | 
| module.exports = function groupToMap(callbackfn /* , thisArg */) { | 
|   var O = toObject(this); | 
|   var self = IndexedObject(O); | 
|   var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); | 
|   var map = new Map(); | 
|   var length = lengthOfArrayLike(self); | 
|   var index = 0; | 
|   var key, value; | 
|   for (;length > index; index++) { | 
|     value = self[index]; | 
|     key = boundFunction(value, index, O); | 
|     if (mapHas(map, key)) push(mapGet(map, key), value); | 
|     else mapSet(map, key, [value]); | 
|   } return map; | 
| }; |