| 1234567891011121314151617181920212223242526272829303132 | 'use strict';var getBuiltIn = require('../internals/get-built-in');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 Map = getBuiltIn('Map');var MapPrototype = Map.prototype;var mapGet = uncurryThis(MapPrototype.get);var mapHas = uncurryThis(MapPrototype.has);var mapSet = uncurryThis(MapPrototype.set);var push = uncurryThis([].push);// `Array.prototype.groupToMap` method// https://github.com/tc39/proposal-array-groupingmodule.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;};
 |