# mapValues > Map values from one object to a new object having the same keys.
## Usage ```javascript var mapValues = require( '@stdlib/utils/map-values' ); ``` #### mapValues( obj, transform ) Map values from one `object` to a new `object` having the same keys. ```javascript function transform( value, key ) { return key + value; } var obj1 = { 'a': 1, 'b': 2 }; var obj2 = mapValues( obj1, transform ); // returns { 'a': 'a1', 'b': 'b2' } ``` The `transform` function is provided three arguments: - `value`: object value corresponding to `key` - `key`: object key - `obj`: the input object
## Notes - Key iteration order is **not** guaranteed, as `object` key enumeration is not specified according to the [ECMAScript specification][ecma-262-for-in]. In practice, however, most engines use insertion order to sort an `object`'s keys, thus allowing for deterministic return values. - The function only maps values assigned to **own** properties. Hence, the function does **not** map values for inherited properties. - The function **shallow** copies key values.
## Examples ```javascript var mapValues = require( '@stdlib/utils/map-values' ); function transform( value, key ) { return key + ':' + value; } var obj1 = { 'a': 'beep', 'b': 'boop', 'c': 'foo', 'd': 'bar' }; var obj2 = mapValues( obj1, transform ); console.dir( obj2 ); // => { 'a': 'a:beep', 'b': 'b:boop', 'c': 'c:foo', 'd': 'd:bar' } ```