Files
lodash/keyBy.js
2017-01-11 12:31:21 -08:00

32 lines
1.0 KiB
JavaScript

import baseAssignValue from './.internal/baseAssignValue.js';
import reduce from './reduce.js';
/**
* Creates an object composed of keys generated from the results of running
* each element of `collection` thru `iteratee`. The corresponding value of
* each key is the last element responsible for generating the key. The
* iteratee is invoked with one argument: (value).
*
* @since 4.0.0
* @category Collection
* @param {Array|Object} collection The collection to iterate over.
* @param {Function} iteratee The iteratee to transform keys.
* @returns {Object} Returns the composed aggregate object.
* @example
*
* const array = [
* { 'dir': 'left', 'code': 97 },
* { 'dir': 'right', 'code': 100 }
* ];
*
* keyBy(array, ({ code }) => String.fromCharCode(code));
* // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
*/
function keyBy(collection, iteratee) {
return reduce(collection, (result, value, key) => (
baseAssignValue(result, key, value)
), {});
}
export default keyBy;