Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
55 lines (52 sloc)
1.81 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var baseCallback = require('../internal/baseCallback'), | |
| baseForOwn = require('../internal/baseForOwn'); | |
| /** | |
| * Creates an object with the same keys as `object` and values generated by | |
| * running each own enumerable property of `object` through `iteratee`. The | |
| * iteratee function is bound to `thisArg` and invoked with three arguments: | |
| * (value, key, object). | |
| * | |
| * If a property name is provided for `iteratee` the created `_.property` | |
| * style callback returns the property value of the given element. | |
| * | |
| * If a value is also provided for `thisArg` the created `_.matchesProperty` | |
| * style callback returns `true` for elements that have a matching property | |
| * value, else `false`. | |
| * | |
| * If an object is provided for `iteratee` the created `_.matches` style | |
| * callback returns `true` for elements that have the properties of the given | |
| * object, else `false`. | |
| * | |
| * @static | |
| * @memberOf _ | |
| * @category Object | |
| * @param {Object} object The object to iterate over. | |
| * @param {Function|Object|string} [iteratee=_.identity] The function invoked | |
| * per iteration. | |
| * @param {*} [thisArg] The `this` binding of `iteratee`. | |
| * @returns {Object} Returns the new mapped object. | |
| * @example | |
| * | |
| * _.mapValues({ 'a': 1, 'b': 2 }, function(n) { | |
| * return n * 3; | |
| * }); | |
| * // => { 'a': 3, 'b': 6 } | |
| * | |
| * var users = { | |
| * 'fred': { 'user': 'fred', 'age': 40 }, | |
| * 'pebbles': { 'user': 'pebbles', 'age': 1 } | |
| * }; | |
| * | |
| * // using the `_.property` callback shorthand | |
| * _.mapValues(users, 'age'); | |
| * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) | |
| */ | |
| function mapValues(object, iteratee, thisArg) { | |
| var result = {}; | |
| iteratee = baseCallback(iteratee, thisArg, 3); | |
| baseForOwn(object, function(value, key, object) { | |
| result[key] = iteratee(value, key, object); | |
| }); | |
| return result; | |
| } | |
| module.exports = mapValues; |