| 'use strict'; | 
| var $ = require('../internals/export'); | 
| var call = require('../internals/function-call'); | 
| var iterate = require('../internals/iterate'); | 
| var isCallable = require('../internals/is-callable'); | 
| var aCallable = require('../internals/a-callable'); | 
| var Map = require('../internals/map-helpers').Map; | 
|   | 
| // `Map.keyBy` method | 
| // https://github.com/tc39/proposal-collection-methods | 
| $({ target: 'Map', stat: true, forced: true }, { | 
|   keyBy: function keyBy(iterable, keyDerivative) { | 
|     var C = isCallable(this) ? this : Map; | 
|     var newMap = new C(); | 
|     aCallable(keyDerivative); | 
|     var setter = aCallable(newMap.set); | 
|     iterate(iterable, function (element) { | 
|       call(setter, newMap, keyDerivative(element), element); | 
|     }); | 
|     return newMap; | 
|   } | 
| }); |