Home

Source: \mapKeys.js


    import baseAssignValue from './.internal/baseAssignValue.js'

/**
 * The opposite of `mapValues` this method creates an object with the
 * same values as `object` and keys generated by running each own enumerable
 * string keyed property of `object` thru `iteratee`. The iteratee is invoked
 * with three arguments: (value, key, object).
 *
 * @since 3.8.0
 * @category Object
 * @param {Object} object The object to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Object} Returns the new mapped object.
 * @see mapValues
 * @example
 *
 * mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
 *   return key + value
 * })
 * // => { 'a1': 1, 'b2': 2 }
 */
function mapKeys(object, iteratee) {
  const result = {}
  Object.keys(object).forEach((value, key, object) => {
    baseAssignValue(result, iteratee(value, key, object), value)
  })
  return result
}

export default mapKeys